-not a Macintosh disk-FbGYa4GYa;0a:a4BH@%gJZ|~?JNP"N,L 8!"@$|Gn"`I N.@A,H<( F<B<H111.Bx<kNNF`, 8! "NH@"|J(g g`LNu"_ |a||a0@||9݁g|w|a||NH瀀 |(_@"g2<@gBA?N`Fa`||aPLNu  fBR$N"NBH@&|݁ |B$<0HN~NL@dBgg>N&|)`RNuBBBA*2h/ BBB N _"_$_"H&|݁ |B$<0NNd 0<`L$|J HA H  2I<FFI<<FFfHHFFfHHH?B@L"_2N _0H 2<@I6@o Az:<2`6@oJA~:<26" @n2BDBB(`EB@nAJEkz`z2<HAIL0.NL0.N  / p? O@ 0  0  XO _,_2_!.NBBB/ BBBN08 @ gNu@ f"_E!NH\O/ ?`@&x|N _!@"|xEz En"`CE"|xN"Ҹ< A  33"|@E E4n"`C&E"|@.N _LHNFLN*8&E@<<'CJJKK f`  f `><$CS*<FF4>BRIBC Gff&<CBSC`D GnKG45BQf` f `Ns |0< BXHQ!4 _$_"_!XOHH/8/ $ f0<? QN ! N.x $_$ g ! N.x !C !!LLyp!N\OFN  l0P߀ Aǀ`  6lo6@ 0_an*>]> j 56, l602  ۰Poo A` &ll6p@ 0?۷a?^ ꭕ 5o6, l602 8!ED91kE"0369? CoNGNOS BOOT FAILED TRY A NEWER MACHINE AND BOOT PROM _"_NN/A lNNu _.NHL$ orD?|?@?e\SFk!!QSWk:CL<HL|hH>L|4H>L|H>SWjTO>SGk\!Q`TSFk QSWk8L|H|L|H|4L|H|hL|H|LSGkQLx _O NNVH8=| f=|G* G, &N(N n"n$n 0.  S@ZeJ S@BBDBG S@gg.BC CJDg720faL`fa:` 320f8<S@`JDg  fa$` fa`  U@o$SBjt`(N&N><`JGg (Ev#$#$QNukJDg`g 3$f(N`BnLN^ _NUNPACK H>8$O&j.(j4,*8:*,BB6*2SCCn`8CL0@D@04"F K0HEY@2< Vb,g`aJaBVgbHE6SCCo`p`HE4RBCo8B@ j(0 j$L| _pN am znNu _"_$_$0H2< @`Q`BQBNNV;n *N^.NuEVINIT NVH,. ^J]g n0`4B?N. f n0`/.//. /.N6(n)FLN^ _NEAD_BLONV/ (n Jno./.?././ /.Nj nJPg`RSn`(_N^ _NEAD_SEQHNT"|E.|r |BBByBygRBf~NuLHPPNqNqpS_n.0<QLHPPNqNqpS_n|~By&JM*Np|azJGfb|a|,Mpa`JGfH|a<<AaJGf0Avtp BQvr BQH@02N\LhL"4NtB@6Kd a"JDf`02IP g a JDf`Nub SBg pxNuBDNu><Nu4< vB@bp2IPSCfSBfNuppB@(4<dBC(4< CBC(C"H4<BACSBf(CAg><NuJoNV?-,N.H|)?NN^ _TONRAP NV.HgVS@g`J.f& -`мS//<N/<NB+_`-m` . ѭ` -`o<Np`B . \J.f/-\/<N4/<N+_\-m\ -\l<N,N^ _PONGETSPACNV .мS//<N/<N-_ .=@ N^.NuINDSPARNVH.. Bg/N0Hހ m0.@I/./<N 8//<Np @n ?.Bg?<BgNLN^ _ NETMMU NVH+| d+|l+|(+||+|+|t+|(|;TV(|;T|(|.;Tz&| n!SLN^.NuETVARS NVH/Nt;| .䐼/+@ .м/м+@+|`*<(< E"D +@\&|?-|0-VS?NHnHmJNJngp+@JBBg/-BgNz+_ -Э+@XBB<0<H/BgNPN+_P+mPBG` m @I G~V GTVgd Gl|p@ @8`$ Gf|p@BT`| p@BT H< @"@=A?.??<BgNRG Gox mI|p@BT mIP|p@/-P/<N* 8LN^NuOOTINITNVH(nB BgNBgNHH,BgN0HѬ f,/, N"BgNBgNHH,BgN0HѬ f,/, NBgNrBgNjHH,BgN0HѬ f:Jf< N/, NBgN2BgN*HH,BgNb0HѬ g<NLBN,BN+_ n/BN|  _r Ё0p//-`N/-/-`N&m`:=E E0o<N0<H+@l+| -lЭd n2HҀ -Ё"-Ҁ(Bg Э/N0Hѭ -Є+@B</-BgN+_+mh -dЭh+@p -lЭp, n0HІ+@ -Э+@ -Э+@?<f/-/-?<Nb-m/ /./-N n LN^ _ NUILD_SYNVH(nBGBF. gB `P-n n0. PoB."` n0. A-H&n/+/<N  n0>+<+/, NBgN<BgN4HH-@BgNj0H(٬ JVJ_gB."`4JGW WJGV WgJFf n `H n n/B."n/BgN2  _ BNB-_JGf n Q/ n P/Nr` Q@H/ n P/NZ|B. n=h-nA-H n-P/./.p/N JGgR-mBg n/( n r Ё/ n P/ nP/ | ? Q@?N9_Jlg< N, nQ f|"LN^ _NOADSEG NVHBBg/-tBgN+_x -x"-Ҁ+At(|`p}//<Nn -Пx((|p}//<NN -Пx(?<}/-x/-t?<N&|BSLN^.NuLLOC_SCNVHAC 0BgHnNz_m+m-gBBg/-BgNP+_`+m-gBBg/<BgN, м,BgBgBHnBgHnHnBg/.N g<NACD 0BgHnN  g B-n`.BgBgBHnBgHnHnBg/.Nx g<Nf .@+@ -Э+@` B -@+@ -м@+@?</-/-?<N@ <逐.JfB` .ЇP-@JfB` .ЇP-@-g -Ї/ -Ї//./.N`/-/-BBN(|p((|t(LN^.NuOAD_DEB SYSTEM.DEBUG2 SYSTEM.DEBUGNVH nCJp"S@n2&n (nBBgHnN dgZB /, N NBgN BgN HH(BgN0H* f&.B</BgN&B /, N //NlLN^ _ NOAD_UNPNVBgBgBHn</. /.Bg/.N g<NN^ _ NOAD_LLDNVH(n 0-N|>Jg,, .* Ю(H//<N( Д-@`,.(.H//<N-_?//?<N. .P/NdLN^ _NNSTALL_NVH(n=n ~`/, N BgN p_BgN fHH(BgN 0H-@Jg .Ѭ `<N~ .fBN (BN ( GfAB0pB5pB`ACZ 0z`BgN _ .ARE EoHn?<?<HnNAC 0HnHzNg(AB0pp @AB @AB`2HnHzNPgAB0pB5pB`App| 5pgnBg?/.Hn @AHp @AHp</.NX g<NF?. @A/0 @A"0Ҽ/?<NHRGinoLLN^ _ NOADCODEkrni NVBBg/-BgN+_?<e/-/-?<NN^.NuAKESUPSNVH(m . R A T&@-kLN^ _ NINDMAINNVBg/-NF0HѭB</-BgNx+_?<g/-/-?<N\Bg/-|N 0Hѭ|B</-|BgN>+_?<{/-/-|?<N"N^.NuLLOC_OPNV A0C ArC 0AC 0/NLHnHm/NFBgHn0N g< NHnHn/NBgHnrN g<N^/NZBg/.Hn$/N;_N/./.Hm/N-UgNj/.$?-N/N@/N2 n /B/.$0-NH//NR  _ /NBNj+_N^ _PONOADSYS $ SYSTEM.UNPACK SYSTEM.OS SYSTEM.LLDN :NV,_NUvN ,+|v mv PVD@UNHmHmNHm?- -|Э//-NzNZN N]N NuN^NuOADER NVHAv(HA^&HHn?-.0-0H".Ҁ// / NrJng<NLN^.NuEAD_PAGNV0.HBH"-DҀ-A0.HBH@J@=@/.NvAv0.HЈ-@ N^ _TONIND_SENNVBH nCJp"S@n2 n BBgA/A/Nz-m2Av(H&L U.=m6B|`A^-HHAv(BE`:HnN?-.0-0H".ҀH҅///.HNhؼJnNg<NRE Eom6l^Bn So4 X/ U/0S@?A/?<$Hn/. N n gRn G0.D@@20HҌ-A n-P`/ /?A/?<$Hn/. NRFinBo$ n g< G0.D@@20HҌ-A/.HnP?<NN n/B?.vN4  _ LN^ _ ND_SEARCNVH n-h .S/0-:H/N ;@Z-n p+@V;m:\BF` AvIBBlRF Fo=mHnNBgHn?->N>H/p6/NNZBp6/A/NACp S@n0HnN^J.gHHnHnN .Wgz n/B?.N  _ `SFRGm>fBGBNJFfELN^ _PONOOKUP_ENVH.<A"G";n .;m.,?.?-.N;n0BN&Av(HJg<NH;l~:+lD;lB;l>;l@;l<;T8;l26+l.2 2f<N m8lB?,N&_+SH+kL+kPLN^.NuNITMEDINV m8lBg/.HnN2_`/.HnHnNn .gB/.N-_N^.NuPENINPUNVH(.BGBF Go<NR Av:0JEf<N8 EHl@ AvH"Ұ n n Jf<NHH " n ``RGE`LN^ _ NIND_POSNV-mV/.0-:H/N+_VJV]2-ZHV]g<N0-:H/-V/N2 .;@\ -Vg/-VHnHnN/.N"N^.NuILLBUF NV0-\m:f -VR2-:H//NNT0-\AvpRm\N^NuETBYTE NVHBgNHH<BgNH>JGl H м> G=@LN^NuETWORD NVHBgN0H//<ND,BgN0H.Jl޼ Ї-@LN^NuETLONG NVH,. 0-:m\>HǼl>JGo0-\AvA//.H/NH߮Hǜm\0-:HnJV]2-ZHV]g<N -VR/HnHnNn-nA^(H/0-:H/N*l-EJoZHn?-.0-0H".Ҁ/?././ NjJng<N~0-:H/./N(ٮ .Ѯ .ѭV`:Jo -VR2-:H//NNhJfLN^ _PONOVEMULTNVH(n0,k @nH0;N *6BN\BgHlN_`n/,N`dBgN_`XBgN9_`LBN)_`@/,/,N:`2&l.,/ ?-.0-0H", Ҁ/?,/ /NP`<NhLN^.NuRIVER_C//0/2/ AH@B@2/Ё/@" /WXNuNV// /"/N:/A" N^/WXNuNV// /"/N/@" N^/WXNuH>*jD,jD$HBJBf6B@H@g4HB04"B@H@`$&BBxԂрҁmRQJjDjDL|NuNuNuJoNu$_0 _"_J @o4$ Tg,2ABAgSBgS@2@ISA QS@kQN$_0 _"_J`!QN$_02 _`QNHBB oJ0/2/gk gRBSAn` R gSBRAk?B/oL\NuHBB oJ0/2/gk fRBSAn` R fSBRAk?B/oL\NuHr`HBA oJ"oJB@f`fQ AA/oL\NuH"o J oJv`:H"o J oJBC`&H o J"oJv`H o J"oJBCB@BA@m4`4`fQ@n C`cC"/oL\NuH0/ oC"4JBAR`$aJBBB`QQ oC"0/H#//IL._NuH oJB@BA"o JBBBlBA`$HR` fQ`RS@`?A"/oL\NuH o0/2/SA"o JBBA@m`Q/o L NuB`$_02 _ @o0 Ao*BBAm"6@SCBoSA`@"H`RCoN$_0"_ _J/ S@m*BABB@m6B$I”@`!Q`QNuϞJ Rev H 2 of 2~!{t TRANS"|~J5 :a$kTkJϞe3 "#LUd  M ` $.%j"$rm248.G.TEXTٌٜ%$rm248.M.TEXTٟٲ``%$romobj2code.OBJlvl %$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K4$TOMAC.TEXTK4K468K.Obj``ۆ`ۉ$Obj/ToolIntf.Obja$Obj/ToolTraps.Objb{c{c$OBJIOLIB.objc>($OSERRS.ERRdÜXX$pack/station1.OBJt0l7l8 rr$pack/station1.Rsrctl8El8V_$pack/station1.TEXT9(f޴pp $pack/station1r.TEXT:Z!]W "$pack/station1r.TEXT:Z!]W "${T11}PHRASEsX)*(jj@@@NNNNN rm248.G.TEXTG.TEXTSn`N^ _PONСϞJٌwٜNV n  M rm248.M.TEXTM.TEXTSn`N^ _PONСϞ JٟwٲNV n  romobj2code.OBJde.OBJ`N^ _PONСϞ!Jlv^lNV n  3.4 "6F^..3ND!l^(.PAGE (.IF EXTERNAL = 1 (.LIST (.ENDC (.IF USERINT = 1 ;********************************** ; Mini-Graphics Package * ; Contributed by Mike Urquhart * ; Copyright 1983, 1984 Apple * ;********************************** ;________________________________________________________________________________ ; ; DRAWDESK: ; ; this routine performs the following sequences: ; ; 1. clears the screen to a white background. ; 2. makes a menu bar by drawing a single pixel horizontal ; line across the screen. ; 3. fills the screen area below the menu bar with the stantard ; gray shade. ; ; Also has an entry point called CLRDESK that only does item (3). ; ; Destroys regs D0-D2,A1,A5-A6 ;________________________________________________________________________________ ; ; 1. clear screen to white background DRAWDESK (clr.l d2 (bsr.s whiten ; ; 2. make menu bar border CLRDESK moveq #ROWBYTES,d0 ;set length of line = 90 bytes (moveq #-1,d2 ;draw a black pattern (move.w #MENULINE,A1 ;start at offset 1440 address (moveq #1,d1 ;draw only 1 pixel line (bsr.s paint_box ; ; set a6 to starting pixel address for grey routine below ; set a5 to limit ; (move #DESKLINE,a6 (move #DESKLMT,a5 ;set limit ; ; 3. make the grey background: to make the gray background, alternating ; rows of $5555 and $AAAA starting with $AAAA are written to the ; screen area. ; gray MOVE.L #DESKPATRN,D2 ;set up grey pattern gray1 swap d2 ;start with the $AAAA pattern (moveq #1,d1 ;draw a one pixel high line (move.l a6,a1 ;starting pixel address must be in a1 for call (bsr paint_box @1 add d0,a6 ;bump to next pixel line (cmp.w a5,a6 ;is a6 less then max? (blt.s gray1 ;loop if yes (rts ;else done ;_________________________________________________________________________ ; ; subroutine blacken and whiten: clears full screen to black or white ; ; Calls: bsr blacken (no parameters) ; ; clr.l d2 ; bsr whiten ; ; registers used: d2.l - contains either FFFFFFFF or 0 on return ; d0.b - destroyed but contains $5A (90) on return ; d1.w - destroyed-->should contain 0 on return ; a1.l - destroyed ; ; ; This routine calls paint_box, so other registers may be destroyed. ; ; ;_________________________________________________________________________ BLACKEN (moveq #-1,d2 ;black fill pattern whiten (move.w #MaxY-1,d1 ;number of pixels in screen box heigth (moveq #ROWBYTES,d0 ;length of screen box is 90 bytes (suba.l A1,A1 ;clear A1 (bsr.s paint_box (rts ;------------------------------------------------------------------------ ; Subroutine to clear only menu bar on desktop ; Inputs: ; None ; Outputs: ; None ; Side Effects: ; None ;------------------------------------------------------------------------ CLRMENU MOVEM.L D0-D2/A1,-(SP) ;save regs (MOVEQ #ROWBYTES,D0 ;width of menu bar is 90 bytes (MOVEQ #MBARLEN,D1 ;heigth is 15 pixels (MOVEQ #0,D2 ;set fill pattern (SUBA.L A1,A1 ;upper left corner is at offset 0 (BSR.S PAINT_BOX ;go do it (MOVEM.L (SP)+,D0-D2/A1 ;restore and (RTS ; exit ;________________________________________________________________________________ ; ; Routine paint_box ; ; Call: BSR paint_box ; or ; BSR paintb2 ; ; register setup: ; ; D2 must contain a one word fill pattern. ; D0 must contain the width of the box(horizontally) or the length of ; the line. ; D1 must contain the heigth(vertically of the box) in horizontal pixel ; rows: ; A1 must contains the screen displacement in the range 0..32670 ; ; __________________________________ ; . . ; . fill pattern . <-------heigth in pixels ; __________________________________ ; ^ ; ........... length horizontally ; ; Assumptions: location SCRNBASE contains the video address ; ; registers used-->D0-D3,A0-A2 ;________________________________________________________________________________ PAINT_BOX paintb1 lea movinst,A4 (bra.s cont inverse lea exclusive,A4 cont ADD.L SCRNBASE,A1 ;add video address to starting pixel address offset. paintb2 (MOVE.L A2,-(SP) ;save reg ; do some setup steps ; (CLR.L D3 ;clear for use (MOVE.W D0,D3 ;modify width/length (NEG.l D3 ;negate the width/length (D3 = -width/length) ; ; add the length of one horizontal pixel row-2 to the -width/length ; to derive an offset which can be added to the updated address pointer ; (when it reflects the right corner or end point of the box/line) ; in order to arrive at the next row starting address. ; (ADDI.l #ROWBYTES,D3 ;create displacement for following sequence ; ; ; (MOVE.L A1,A2 ;create ending column check address (ADD.L D0,A2 ;add length of line to obtain ending column address ; ; A1 now points to the left top coordinate of the box or line. ; A2 now points to the right top coordinate of the box or line. ; startop (jmp (A4) ;execute the correct operation (EOR or MOVE) movinst (MOVE.w D2,(A1)+ ;start the sequence (bra.s compare exclusive (eor.w D2,(A1)+ compare CMP.L A1,A2 ;reached the right most point? (BEQ.S nextline ;yes (BRA.S startop ; ; YES ; nextline (ADD.L D3,A1 ;add 1 horizontal line length (5A) minus line length (ADDA #ROWBYTES,A2 ;to reach the left most point of the box on the RM000 (SUBQ.W #1,D1 ;next horizontal scan line. (BNE.S startop ;loop until done. ; (MOVE.L (SP)+,A2 ;restore and (RTS ;return ;------------------------------------------------------------------------ ; Entry point to set cursor ptrs and make alert box for power cycling ;------------------------------------------------------------------------ MAKEPCALRT (MOVEQ #PCROW,D5 ;set row ptr (MOVEQ #PCCOL,D6 ;and col ptr @;then drop into alert box routine ;________________________________________________________________________ ; ; MAKEALERT ; ; This routine creates an alert box with no title. ;________________________________________________________________________ MAKEALERT (movem.l d0-d1/a1,-(sp) (MOVEQ #ALRTWIDTH,D0 ;set parameters for box (MOVE.L #ALRTHIGH,D1 (MOVEA #ALRTSTRT,A1 (bsr.s makebox (movem.l (sp)+,d0-d1/a1 (rts ;________________________________________________________________________ ; ; MAKETEST ; ; This routine creates an alert box for test icon display. ;________________________________________________________________________ MAKETEST (movem.l d0-d1/a1,-(sp) (MOVEQ #TSTWWIDTH,D0 ;set parameters for alert box (MOVEQ #TSTWHIGH,D1 (MOVEA #TSTWSTRT,A1 (BSR.S MAKEBOX ;go draw box (MOVEQ #TSTMROW,D5 ;set cursor ptrs (MOVEQ #TSTMCOL,D6 (LEA CHKMSG,A3 ;set message ptr (MOVEQ #-1,D1 ;append '...' string (BSR DSPSTRING ;and go display it (BSR DSPCPU ;display test icons (BSR DSPIOB (BSR DSPMBRD (BSR DSPXCRD (movem.l (sp)+,d0-d1/a1 (rts ;________________________________________________________________________ ; ; MAKEDBOX ; ; This routine creates a dialog box. ;________________________________________________________________________ MAKEDBOX (movem.l d0-d1/a1,-(sp) (MOVEQ #DBOXWIDTH,D0 ;set parameters for dialog box (MOVEQ #DBOXHIGH,D1 (MOVEA #DBOXSTRT,A1 (bsr.s makebox (movem.l (sp)+,d0-d1/a1 (rts ;________________________________________________________________________ ; ; routine makewindow ; ; This routine creates a fixed window of the folder type. ; The calling routine must provide the address of the ; string which will be used to fill in the title box. ; ; Call: ; move ,d0 ; move ,d1 ; move ,a1 ; lea ,a3 ; bsr makewindow ; ; This routine calls makebox ; ;________________________________________________________________________ MAKEWINDOW (movem.l d0-d1/a1,-(sp) (bsr.s makebox ; ; now draw the title box by drawing a single black line across ; the width of the window about 17 pixels from the top edge ; (MOVE.L A1,-(SP) ;save start point (add.w #MENULINE,a1 (moveq #1,d1 ;set heigth of one pixel (moveq #-1,d2 (bsr.s paint_box (MOVE.L (SP)+,A1 ;restore start point (bsr writetitle (movem.l (sp)+,d0-d1/a1 ;restore and return (rts ;________________________________________________________________________ ; ; Routine makebox; ; ; This routine creates a window of either the folder type ; or the dialog box type. Is is the responsibility of ; the calling process to append the title box and title ; to the window if it is the folder type. ; ; Call: ; move.w ,d0 (range 0..90) even ; move.w ,d1 (range 0..364) ; move.w ,a1 (range 0..32670) ; bsr makebox ; ; registers used: d0,d1,d2,d3,d4,a1,a2 ;________________________________________________________________________ MAKEBOX ; ; make the basic window--->no edges D2 must be set to 0 on call ; d0 must be set to the width (90 maximum) ; d1 must be set to the heigth (364 maximum) ; A1 must be the offset address (0..32670) ; ; (movem.l d0-d4/a1-a4,-(sp) (movem.l d0-d1/a1,-(sp) ;save the heigth and the starting pixel address (clr.l d2 ;the pattern (bsr paint_box ; ; now draw the individual edges including the shadow edges on the right ; and bottom of the window ; ; ; draw bottom horizontal edge ; (sub.l d3,a1 (sub.l d0,a1 ;a1 is currently equal to the lower right point @; of the box so we can subtract the width to @; calculate the lower left point of the box. (moveq #1,d1 ;set 1 pixel heigth (moveq #-1,d2 ;set the line pattern (bsr paintb2 ;remember a4 is set up to point to the move.w @; instruction ; ; draw bottom horizontal shadow ; @1 addq #2,a1 ;shadow begin offset by 2 (moveq #1,d1 ;draw a one pixel line (subq #2,d0 (bsr paintb2 ;go ; ; draw top horizontal edge ; @2 movem.l (sp)+,d0-d1/a1 ;restore original parameters (movem.l d1/a1,-(sp) (moveq #1,d1 ;draw a 1 pixel line (bsr paint_box ; ; now draw the right edge plus the right edge's shadow, use a1 ; with a column parameter of 0 ; (movem.l (sp)+,d4/a2 (moveq #1,d2 (subq #2,d4 (subq #2,d0 (add.l d0,a1 (move.l d4,d1 (clr.l d0 (bsr.s paint_v (move.w #182,d0 ;set one byte offset from right edge (moveq #7,d2 (move.l d4,d1 (bsr.s paintbit ;draw first pixel line of the right shadow (move.w #272,d0 (moveq #6,d2 (move.l d4,d1 (subq #1,d1 ;reduce heigth by 1 to compensate for shadow offset (bsr.s paintbit ; ; now draw the left vertical edge of the box ; (move.l a2,a1 ;restore the starting pixel address (add.l SCRNBASE,a1 ;add in video address (moveq #90,d0 (add.l d0,a1 (move #32768,d2 ;set the pattern (move.l d4,d1 ;the heigth minus two (clr.l d0 ;column 0 offset (bsr.s paint_v (movem.l (sp)+,d0-d4/a1-a4 (rts ;_________________________________________________________________________ ; ; Routine paint_v ; ; This routine "paints" a vertical column one word wide. ; ; Call: BSR paint_v ; ; register setup: ; ; A1 must contain the screen base address. ; D2 must contain a one word pattern. ; D1 must contain the number of pixels in the vertical length of the line ; in the range 1..364 ; D0 must contain the screen word column in the range 0..44 ; ; Assumptions: location SCRNBASE contains the video address ; ; registers used: D0-D1 ;________________________________________________________________________ ; PAINT_V paintv1 @1 MOVE.W D2,0(A1,D0.W) ;write to screen (SUBQ.W #1,D1 ;decrement count (BEQ.S @2 ;return (ADDI.W #ROWBYTES,D0 ;bump to next horizontal line (BRA.S @1 ;loop to continue writing vertical. ; @2 RTS ;return ;_________________________________________________________________________ ; ; Routine paintbit ; ; This routine "paints" a vertical line one bit wide. ; ; Call: BSR paintbit ; ; register setup: ; ; A1 must contain the screen base address. ; D2 must contain the bit number to set ; D1 must contain the number of pixels in the vertical length of the line ; in the range 1..364 ; D0 must contain the screen word column in the range 0..44 ; ; Assumptions: location SCRNBASE contains the video address ; ; registers used: D0-D1 ;________________________________________________________________________ PAINTBIT @1 bset d2,0(a1,d0.w) (subq.w #1,d1 ;subtract one from heigth (beq.s @2 ;done (addi.w #ROWBYTES,d0 ;increment to next pixel row. (bra.s @1 @2 RTS ;return ;______________________________________________________________________ ; ; Routine makebutton --> creates a black lined box of the size ; specified by the parameters with button ; "label" and description if specified. ; Also makes entries in active rectangle ; table for later use with mouse. ; ; the left top corner is addressed by a1, ; the alternate keycode is contained in d0. ; the description is in A3. ; description location is in A2. ; '...' string appended to message if d1 nonzero ; ; ; Call: ; ; move.w ,a1 ; move.b ,d0 ; lea