@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u05  15 2 2151^116115ύ011$r2ԭ5 3)5)5ԭx GT}@@L00)+& 2 L0=ɛ -L!1LV1L1 /3 3ȹ441L-4 v3 25 2H 2h͔5U}L3L3 2 k3U hh`DOC`QL3P1Lk0S1H /3h0B k3@ VL0LU!#$53 1181118V}1111Ε5 1Lk0552 1Ȍ1i111i11115Lk0pppB4f5&&&&&&&&^6f^6&&&&&W}&&A1@BJ D2ELVK@BHILV^Щ6 2BD2EJ VBD5EHI0 V0%5X}5 2iХiL[2 25 25`D:*.*` i@`8 ``@i `8@`0 BLV525<4Y}5`HH i ԍΗ552 ԍhh@ Lح1Э1Ѣ 24.4 24Z}4`D4E` 2BJ k3LVRH` 2BD4EhK)I JLV333 BASIC languag i}e OBJ > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST j} > BASIC LISTing -Some MACHINE language programs can only be run by booting the disk MENU "without" BASIC! -For s k}ome programs, XL/XE models may require a "TRANSLATOR" program to be booted first! [Also available from BELLCOM] - l}Most programs are relatively self-explanatory; however, some have separate DOCumentation files available. Some BASIC m} programs may contain instructions in their program listings. -To use this great MENU program on your own disks, n}simply copy the file "AUTORUN.SYS" onto your disk. * MENU written by DAVID CASTELL * program on your own disks, ^ \ / \ / \/ ******** * * * * * SSTV * FOR ATARI COMPUTERSp} * * ******** ******** * * No, we're not talking about thatcomedy network. With this proq}gram,along with the proper hardware,your Atari 8-bit computer will beable to receive Slow Scan TVpictures in B&W and evenr} in livingCOLOR! SOFTWARE --------SSTV.OBJ - The main program.Commands available: (F) = Fos}rmat. Changes the RGB format. After pressing F, type 3 digits, consisting of 0, 1, or 2. For B&W, tyt}pe 0,0,0. Normal RGB would use 1,1,1.(S) = Short. Sets scan speed to 8.5 sec. frame rate.(M) = Medium. Sets u}scan speed to 12 sec. frame rate.(L) = Long. Sets scan speed to 24 sec. frame rate.(E) = Erase screen.(Z) =v} Zoom. Corrects SSTV picture for Atari's screen format.(V) = View the picture stored in memory.(D) = Disk. Stw}ores the picture in memory to disk. Type in the filename, without the extension. The program adds .R.x}G & .B extensions.(C) = Core memory. Allows a scan stored on disk to be loaded from the disk into the comy}puter. Again, type in the filename.(R) = Red. Changes the brightness of that color.(G) = Green. Changes the bz}rightness of that color.(B) = Blue. Changes the brightness of that color.(START) = Begin collection of a {} picture.(OPTION) = Reset scan to top of screen.(SELECT) = Begin scan if sync pulse is missed.|}NOTE:More information concerning thesoftware (and hardware) isavailable from the August 1985issue of QST and also fro}}m thefollowing company:A&A Engineering,7970 Orchid Dr.,Buena Park, CA. 90620Phone (714)521-4160.(A&A Engineering als~}o have a PCboard & kit of parts available.)(The article is copyrighted by ARRLin QSL, so it cannot be reprintedhere.)F}or those programmers among us, theother programs on the disk(SSTV.MAC & SSTV.BIN) containthe source code for SSTV in Atari}Macro Assembler.Have Fun! theother programs on the disk(SSTV.MAC & SSTV.BIN) containthe source code for SSTV in AtariObP̄˩0΄ͱˑL0L1c=?01L0(L02=LD2LX2LS168}L0L4:L4L1%L1>L1*L1L0ЉL66 2L06 Ў 2L0 Ѕϩ6}2 P?6L21Q?8.668n6L21©R?v66L218.68.6n6L216n6 Ћ6ۍ6L0.6}L0 66 \䩿-oo6601666PL0 6? T36L0 6?T36L0 6?T3}6L0 9z@z@66 266 266 2z@z@6L0͆΢(͈(e͐΅` 6@ l266L0 }6 l266L0 6 l266L0 ͢`0166>p˅̎01@ oo6>6666 3 3}L26 3 3L26 !4 3L26$%664J \` r3y 6` 8n6` G3 G3Б( }3`66Ϣ)eυJJJJ66`66ϭ6L3666L3```} 3(e͐ͅέ`66)666 C466Ά͠ C4`6666 C466Ά͠ C4`6776 C466Ά}͠ C4`ˊ` Y4K4L4Lb 36 6)Y4`t46` 346` !4Y46` 6L09*@*@ 7 7L4 91@}1@ 7 779@@7@ͩ6΢PB D7EJK VL56BHI Vɛ0}[67 @Ȍ6L4 B V 76777 7󩛙77`BD7E 7JK VL 6 7B͝Dȱ͝Ee}͐Ω؝HI VL 6 B V7LW5*@*@@@1@1@L07L56L06 66Є M6}66Є M666Є M6L0Ɇʥiʅʄ͆΢y(ɑ͈ɑͩ(e͐΅ͩ(eɐʅڦφͥiΥi(ЅϥiТa}(͑ψ͑ϥ8(Ѕ8(΅`AXNUQRRTePPapPAPB.G.R.K:D:}}}}}}}}}}}}}}}pppOP}O}Ap>pppF`?F@A=?a}tarisstvQQQXNU}}}}}OO% ORG $3000**************************** LABEL EQUATES***************************CLICK: EQU $FCD8}SDLSTL: EQU $230SDLSTH: EQU $231PCOLR3: EQU $2C7PCOLR4: EQU $2C8GPRIOR: EQU $26FCH: EQU $2F}CCONSOL: EQU $D01FPORTA: EQU $D300TRIG0: EQU $D010KBF: EQU $38KBC: EQU $12KBD: EQU $}3AKBL: EQU $00KBM: EQU $25KBS: EQU $3EKBE: EQU $2AKBR: EQU $28KBG: EQU $3DKB}B: EQU $15KBX: EQU $16KBV: EQU $10KBZ: EQU $17CONSTR: EQU $6CONOPT: EQU $3CONSEL: } EQU $5TEMP1: EQU $CFTEMP2: EQU $D0TEMP3: EQU $CDTEMP4: EQU $CETEMP5: EQU $CBTEMP6: EQU } $CCTEMP7: EQU $C9TEMP8: EQU $CAIC EQU $340SETVBV: EQU $E45CCIOV EQU $E456XITVB: EQU } $E462VVBLKD: EQU $224MENUF: EQU $3FBAMENUS: EQU $3FE2MENUE: EQU $407BMENUD: EQU $402BMENUM: } EQU $4032MENUFN: EQU $40CBFILE: EQU $40D4SHDR: EQU $40SHDG: EQU $C0SHDB: EQU $90 } EJECT*************************** MAINLINE KEYBOARD* ROUTINE. WORKS THRU THE* CH REGISTER AND CONSOLE* REGISTER}************************** JMP ERASE ;CLEAR THE PICTUREKEY2: LDA #$81 ;COMPLETE INITIALI}ZATION LDX #$63 ;SETUP THE MENU COLORS STA PCOLR3 STX PCOLR4 LDX } #LOW MENU ;POINT TO THE MENU SCREEN LDA #HIGH MENU STX SDLSTL STA SDLSTHKEYS: } LDY #$FF ;PARTIAL INITIALIZATION LDX #$7NOHIT: CPX CONSOL ;CHECK CONSOL REG. } BEQ ALPHA ;BRANCH IF CLEAR STY CH ;CLEAR THE CH REG. JMP PRIOR ;SERVICE CO}NSOLALPHA: CPY CH ;CHECK KEYBOARD BEQ NOHIT ;BRANCH IF CLEAR LDA CH };GET CHAR STY CH ;CLEAR CH REG.RA1: CMP #KBR ;CHECK FOR R KEY BNE GA1 } JMP RBO ;SERVICE RED LEVELGA1: CMP #KBG ;CHECK FOR G KEY BNE BA1 JM}P GBO ;SEVCIVE GREEN LEVELBA1: CMP #KBB ;CHECK FOR B KEY BNE XKEY JMP }BBO ;SERVICE BLUE LEVELXKEY: CMP #KBX ;CHECK FOR X KEY BNE FKEY JMP XIT } ;SERVICE EXITFKEY: CPY VON ;CHECK IF IN VIEW BEQ KEYS ;DISABLE KEYS IF VIEW } CMP #KBF ;CHECK FOR F KEY BNE LETT JMP FSET ;SERVICE FORMATLETT: CMP #K}BC ;CHECK FOR C KEY BNE L2 JMP GETIT ;SERVICE RETRIEVEL2: CMP #KBD ;C}HECK FOR D KEY BNE SSET JMP PUTIT ;SERVICE STORAGESSET: CMP #KBL ;CHECK FOR L} KEY BNE S1 JMP SLOW ;SERVICE 24 SEC RATES1: CMP #KBM ;CHECK FOR M KEY } BNE S2 JMP MED ;SERVICE 12 SEC RATES2: CMP #KBS ;CHECK FOR S KEY B}NE ERA JMP FAST ;SERVICE 8.5 SEC RATEERA: CMP #KBE ;CHECK FOR E KEY BNE } VKEY JMP ERASE ;SERVICE ERASEVKEY: CMP #KBV ;CHECK FOR V KEY BNE ZING } JMP VIT ;SERVICE VIEWZING: CMP #KBZ ;CHECK FOR Z KEY BNE KEYS ;BRANCH IF IN}VALID KEY JMP FULL ;SERVICE FULL SCREEN EJECT*************************** SERVICE ROUTINE}S* THESE ARE CALLED FROM THE* KEYBOARD HANDLER AND DO* THE REQUESTED SERVICES************************** * VIEW ME}MORY SERVICEVIT: LDA #$FF ;SET THE VIEW SWITCH STA WING JSR CLICK ;SOUND TH}E KEY JSR COLL ;JUMP TO THE COLLECTION JMP KEYS ;THEN RETURN TO KYBD* CONSOLE }SERVICEPRIOR: LDA VON ;CHECK FOR VIEW CMP #$FF ;OPERATION AND STOP BEQ PROU}T ;IF IN PROGRESS LDA CONSOL ;SAVE THE CONSOLE SWITCH STX CONSOL ;THEN CLEAR THE REG}. CMP #CONSTR ;CHECK FOR START BNE PROUT ;ONLY START IS ACTIVE NOW JSR COLL} ;GO TO COLLECTIONPROUT: JMP KEYS ;THEN RETURN TO KYBD * FORMAT ROUTINEFSET: JSR CLICK } ;SOUND THE KEY LDA #$3 ;ALLOW 3 NUMBERS LDX #$0 ;OFFSET ON SCREEN STX} TEMP2 STA TEMP1 LDA #$1 ;SET LOW BIT IN FORMAT STA FORMATN0: LDY} #$FFN1: CPY CH ;CHECK FOR KEY BEQ N1 ;WAIT TIL STRUCK LDA CH } ;GET THE KEY STY CH ;AND CLEAR REG. LDX TEMP2 ;GET OFFSET CMP #$32} ;CHECK FOR # 0 BNE N2 LDA #$50 ;PUT 0 ON SCREEN STA MENUF,X }INX ;MOVE POINTER INX ASL FORMAT ;SHIFT A 0 INTO FORMAT JMP NF } ;FINISHN2: CMP #$1F ;CHECK FOR # 1 BNE N3 LDA #$51 ;PUT 1 ON SCREEN } STA MENUF,X INX ;MOVE POINTER INX SEC ;SHIFT A 1&0 INT}O FORMAT ROL FORMAT ASL FORMAT BCC NF ;CHECK FOR OVERFLOW ROR } FORMAT ;RESET VALUE JMP NFN3: CMP #$1E ;CHECK FOR # 2 BNE N0 ;KEEP }LOOKING LDA #$52 ;PUT A # 2 ON SCREEN STA MENUF,X INX INX LDA} #$76 ;CHECK FOR 2X2X2 CMP FORMAT BNE G3 LDA #$FF ;SET FOR 2X2X2 } STA FORMAT JMP NFG3: SEC ;SHIFT 1 1 INTO FORMAT ROL FORMAT } SEC ROL FORMAT BCC G1 ;CHECK FOR OVERFLOW ROR FORMAT ;RESET } JMP NFG1: ASL FORMAT BCC NF ROR FORMATNF: STX TEMP2 ;STORE PO}INTER JSR CLICK ;PUT OUT KEY CLICK DEC TEMP1 ;COUNT ONE KEY BNE N0 } ;KEEP LOOKING LDA #$FF ;CHECK FOR 2X2X2 CMP FORMAT BNE G2 LDA } #$DB ;STORE THE CORRECTION STA FORMAT JMP KEYS ;FINISHED SERVICEG2: CLC } ;SHIFT 1 TO FRONTFILL: ROL FORMAT BCC FILL JMP KEYS ;FINISHED SERVICE*} EXIT SERVICE ROUTINEXIT: JSR CLICK ;SOUND KEYBOARD LDA #$7 ;RESTORE VB INTR. } LDY VBINT ;TO PRIOR VALUES LDX VBINT+1 ;AND STOP THE CYCLE JSR SETVBV }LDA #$BF ;SHUT OFF GRAPHICS 9 AND GPRIOR STA GPRIOR LDA SCRPNT ;RESET} SCREEN LDX SCRPNT+1 ;POINTER TO MENU STA SDLSTL STX SDLSTH LDY #$0} ;SHUT OFF ANY VIEW STY WING ;OPERATIONS STY VON ;DISABLE VIEW CPY } ZON ;CHECK FOR FULL SCREEN BNE ERASE ;GET RID OF FULL SCREEN JMP KEY2 ;FULL} INITIALIZATION* SPEED SERVICE ROUTINESLOW: JSR CLICK ;SOUND KEY LDY #$3 ;POINT T}O 24SEC VALUESP1: LDA SPD3-1,Y ;AND PUT ON SCREEN STA MENUS-1,Y DEY BNE SP1} LDA #$B ;SET COUNTER FOR STA AVR+1 ;LONG AVERAGE STA COMP ;SET C}OMPOSITE JMP KEYS ;AND RETURNMED: JSR CLICK ;SOUND KEY LDY #$3 ;POINT} TO 12SECSP2: LDA SPD2-1,Y ;VALUE AND PUT STA MENUS-1,Y ;ON SCREEN DEY BNE } SP2 LDA #$5 ;SET COUNTER FOR STA AVR+1 ;MEDIUM AVERAGE STA COMP };SET FOR COMPOSITE JMP KEYS ;AND RETURNFAST: JSR CLICK ;SOUND KEY LDY #$3 } ;POINT TO 8.5SEC SP3: LDA SPD1-1,Y ;VALUE AND PUT STA MENUS-1,Y ;ON SCREEN DEY } BNE SP3 LDA #$5 ;SET COUNTER FOR STA AVR+1 ;FAST AVERAGE LDA #}$0 ;CLEAR COMPOSITE STA COMP ;FOR THIS SCAN JMP KEYS ;AND FINISH* ERASE} MEMORY SERVICE ROUTINEERASE: JSR CLICK ;SOUND KEY LDY #$5 ;POINT TO ERASECL1: LDA } #$7F ;ON SCREEN AND AND MENUE-1,Y ;CHANGE COLOR STA MENUE-1,Y DEY B}NE CL1 LDA DLR1 ;POINT TO RED LDX DLR1+1 ;FRAME AND JSR CLEAR ;G}O CLEAR LDA DLG1 ;POINT TO GREEN LDX DLG1+1 ;FRAME AND JSR CLEAR ;GO} CLEAR LDA DLB1 ;POINT TO BLUE LDX DLB1+1 ;FRAME AND JSR CLEAR ;GO C}LEAR LDY #$5 ;CHANGE ERASECL2: LDA #$80 ;BACK TO ORA MENUE-1,Y ;ORIGINAL} STA MENUE-1,Y ;COLOR DEY BNE CL2 STY ZON ;STOP FULL SCREEN } JMP KEY2 ;AND RETURNCLEAR: STA TEMP3 ;STORE POINTERS STX TEMP4 LDX #$C}1 ;SET COUNTERCLGO3: LDA #$0 ;LOAD A BLANK LDY #$28 ;40 BYTES/LINECLGO1: STA } (TEMP3),Y ;CLEAR A LINE DEY BNE CLGO1 STA (TEMP3),Y ;GET THE LAST CLC } ;ADD ON A LINE LDA #$28 ADC TEMP3 BCC CLGO2 INC TEMP4CLGO}2: STA TEMP3 DEX ;ONE LINE DONE BNE CLGO3 ;DO ANOTHER RTS } ;DONE* COLOR LEVEL SERVICE ROUTINESRBO: JSR CLICK ;SOUND KYBD CLICK LDY RSHD } ;GET THE LEVEL LDX #SHDR ;GET RED SHADE JSR CYCLE ;GO CHANGE VALUE STA } RED ;STORE THE NEW VALUE STY RSHD ;STORE THE PRESENT SHADE JMP KEYS ;FINISH}GBO: JSR CLICK ;SOUND KYBD CLICK LDY GSHD ;GET THE LEVEL LDX #SHDG ;GET} GREEN SHADE JSR CYCLE ;GO CHANGE VALUE STA GREEN ;STORE NEW SHADE STY GS}HD ;STORE THE PRESENT SHADE JMP KEYS ;FINISH BBO: JSR CLICK ;SOUND KYBD CLICK } LDY BSHD ;GET PRESENT VALUE LDX #SHDB ;GET BLUE SHADE JSR CYCLE ;GO CHAN}GE VALUE STA BLUE ;STORE NEW SHADE STY BSHD ;STORE THE PRESENT SHADE JMP } KEYS ;FINISH CYCLE: INY ;INCREASE LEVEL CPY #$8 ;CHECK FOR MAX BNE} FROP LDY #$0 ;RESET IF MAXFROP: TYA ;MOVE VALUE AND ASL A } ;DOUBLE STX TEMP3 ;WORK IN ORA TEMP3 ;HUE LDX #$C0 ;MAKE A NICEF}TMP: DEX ;LITTLE DELAY BNE FTMP RTS ;DONE* SCAN SERVICE ROU}TINECOLL: LDA SDLSTL ;POINT TO THE LDX SDLSTH ;MENU DISPLAY PATTERN STA SCRPNT } ;AND STORE IT AWAY STX SCRPNT+1 ;FOR LATER LDA #HIGH DLST ;POINT TO THE LDX # }LOW DLST ;RGB PATTERN STX TEMP5 ;AND STORE IT FOR STA TEMP6 ;LATER USE IN CYCLING  } STX SDLSTL ;NOW SET THE STA SDLSTH ;SCREEN TO THE RGB LDA #$40 ;AND SWITC }H ON ORA GPRIOR ;THE GRAPHICS MODE STA GPRIOR ;FOR HI-RES LDA WING ;C }HECK IF THIS IS CMP #$FF ;A VIEW SERVICE BEQ NOGO LDA FORMAT ;GET THE FOR }MAT BNE BWOUT ;CHECK FOR B/W LDA #$80 ;ONE FRAMEBWOUT: LDX COMP ;CHECK }FOR COMPOSITE BEQ COLT ;NOT A COMPOSITE LDA #$80 ;MAKE A 100 FORMATCOLT: STA } FORM ;AND STORE IN TEMP.RGO: CLC ASL FORM ;CHECK FOR A BCC GGO ;1 TO CO}LL. RED JSR RSCR ;SET UP A RED FRAME JSR SSTV ;GET A RED FRAME JMP RGO } ;ANOTHER RED?GGO: CLC ASL FORM ;CHECK FOR A BCC BGO ;1 TO COLL. GREEN } JSR GSCR ;SET UP A GREEN FRAME JSR SSTV ;GET A GREEN FRAME JMP GGO } ;ANOTHER GREEN?BGO: CLC ASL FORM ;CHECK FOR A BCC NOGO ;1 TO COLL. BLUE } JSR BSCR ;SET UP A BLUE FRAME JSR SSTV ;GET A BLUE FRAME JMP BGO ;ANO}THER BLUE?NOGO: LDY #$FF ;GET READY FOR STY VON ;VIEWING ENABLE LDY VVBLKD } ;FINISHED SCANNING LDX VVBLKD+1 ;SO SET UP THE STY VBINT ;VERT. BLANK INTR. }STX VBINT+1 ;FOR CYCLING LDA #$7 ;THE FRAME COLORS LDX #HIGH COLR ;BUT SAVE THE } LDY #LOW COLR ;PRESENT VALUES JSR SETVBV ;FOR RESETTING RTS ;RETURN TO} KYBD USE EJECT**************************** ACTUAL SCAN ROUTINE* THIS ROUTINE IS CALLED * FROM THE SCAN S}ERVICE* ROUTINE. IT WILL COLLECT* ONE FRAME OF VIDEO OF 120* LINES. IT WILL WAIT UNTIL* A VERTICAL SYNC IS DETECTED* O}R THE SELECT KEY IS STRUCK* IF THE ROUTINE FALSE STARTS* THE OPTION KEY WILL RESTART* THE CURRENT SCAN. IF ANY* KEY IS S}TRUCK DURING THE* SCAN THE COMPLETE SET OF* SCANS IS ABORTED.***************************SSTV: JSR BEGIN ;CH}ECK FOR VERT. SYNC LDX #$79 ;LOOKING FOR 120 LINESNEWL: LDY #$0 ;OFFSET POINTER ON LINES}AME: LDA CH ;CHECK IF A KEY STRUCK CMP #$FF ;IF SO ABORT BEQ NOBORT ;BY} SETTING LDA #$0 ;FORMAT TOTAL 0'S STA FORM ;AND RETURNING LDA #$FF  } ;BLANK OUT THE STA CH ;KEY USED RTSNOBORT: LDA CONSOL ;CHECK IF THE !}CMP #CONOPT ;OPTION KEY WAS USED BNE GOON ;IF SO RESET SEC ;THE FORMAT 1 "}FRAME ROR FORM ;TO RECOLL. LDA #$7 ;CLEAR THE KEY STA CONSOL ;STRU#}CK AND RTS ;RETURNGOON: JSR READ ;GET A NIBBLE FROM ASL A ;THE$} A/D CONV. AND ASL A ;MAKE IT THE HIGH NIBBLE ASL A ASL A STA %} TEMP2 ;STORE IT TIL LATER JSR READ ;GET ANOTHER NIBBLE ORA TEMP2 ;AND JOIN TO L&}AST STA (TEMP3),Y ;PUT BYTE ON SCREEN INY ;POINT TO NEXT LINE BYTE CPY '}#$28 ;CHECK FOR END OF LINE BNE SAME ;AND GO FOR MORE JSR WSYNC ;CHECK FOR HORZ.(} SYNC DEX ;THEN ONTO NEXT LINE BNE NEWL ;IF ALL 120 LINES RTS )} ;DONE WITH FRAME* READ AND AVERAGE ROUTINEREAD: STX ON ;SAVE THE X REG. STY OFF*} ;AND Y REG. LDY #$11 ;TAKE 16 READINGS LDA #$0 ;AND SUM THEM STA +} TEMP1 ;START WITH 0AVR: LDX #$5 ;SET THE DELAY/READ LDA PORTA ;GET A CONVERION ,} AND #$0F ;MASK OFF HI NIBBLE CLC ;AND ADD IT ADC TEMP1 ;TO PREV-}IOUS READINGS STA TEMP1DLY: DEX ;WAIT BETWEEN READS BNE DLY ;CHANGES .}FOR SCAN RATES DEY ;CHECK FOR 16 READINGS BNE AVR LDA TEMP1 ;GET TH/}E 16 READINGS LSR A ;AND DIVIDE LSR A ;BY 16 TO GET LSR A 0} ;THE VALUE INTO LSR A ;LOWER NIBBLE LDY OFF ;RESTORE THE X AND LDX 1} ON ;Y REG. RTS* WAIT FOR VERT SYNC ROUTINEBEGIN: LDX #$0 ;RESET THE COUNTERS 2} LDY #$0 ;AND STORE INEGGN: STY ON ;TEMP. LOCATIONS STY OFF LDA #3}$A0 ;STORE VALUE FOR STA TEMP1 ;VERT. SYNC LENGTHOUT: LDA TRIG0 ;READ SYNC LINE 4} BNE ONE ;IF SET BRANCH INC OFF ;IF LOW INC LOW JMP PRNT ;COUNTERONE5}: INC ON ;ELSE THE HIGHPRNT: DEC TEMP1 ;DID ONE READ BNE OUT ;DONE? 6} LDA ON ;IF NOT COMPARE CMP OFF ;TIME ON TO TIME OFF BCC DWN ;SET T7}HE X REG. DEX ;TO REFLECT IF MORE JMP PUFF ;TIME THE SYNC LINEDWN: INX 8} ;WAS ON OR OFFPUFF: CPX #$FF ;CHECK IF OVERFLOW BNE OK ;IS PENDING 9} LDX #$0 ;IF SO RESETOK: LDA CONSOL ;READ THE CONSOL CMP #CONSEL ;KEYS FOR SELECT:} BNE OKAY ;IF IT IS SELECT RTS ;START SCAN NOWOKAY: CPX #$08 ;HAS ;}SYNC BEEN BNE EGGN ;MOSTLY ON IN 8 RTS ;TRIES IF SO GOT SYNCSYNCNT: LDA <} #$A0 ;SET COUNTER FOR STA TEMP2 ;5 MSEC PULSENON: DEC TEMP2 ;START COUNTER =} BNE NON ;AND RETURN AFTER RTS ;5 MSEC* WAIT FOR HORZ SYNC ROUTINEWSYNC: LD>}A TRIG0 ;READ THE SYNC LINE BNE WSYNC ;WAIT FOR SYNC PULSE JSR SYNCNT ;DELAY 5 ?}MSEC LDA #$28 ;ADD A 40 BYTE LINE CLC ;TO PRESENT SCREEN ADC TEMP3@} ;POINTER STA TEMP3 BCC PULSE INC TEMP4PULSE: LDA TRIG0 ;WAIT FORA} SYNC END BEQ PULSE ;THEN DO MORE RTS EJECT**************************** COLOR RB}OUTINES THESE* ROUTINES ARE USED TO CYCLE* BETWEEN THE THREE COLOR * FRAMES, ONE FRAME FOR EACH* VERTICAL INTERUPT. SOMEC}* ROUTINES CHANGE THE NECESSARY* POINTS IN THE DISPLAY LIST,* OTHERS CHANGE THE SCREEN* COLOR AND ONE DOES THE* ACTUAL CD}YCLING**************************** ROUTINES WHICH CHANGE* DISPLAY LIST FOR EACH* FRAMERSCR: LDA E} RED ;GET PRESENT RED VALUE LDX FORMAT ;CHECK FOR B/W CPX #$0 ;IN FORMAT F} BNE BLACK ;IF IS MAKE THE AND #$0F ;BLACKBLACK: STA PCOLR4 ;SET SCREEN COLOR G} LDA DLR2+1 ;POINT TO RED FRAME LDX DLR2 ;ADDRESS AND LDY CNT ;CHANGEH} DISPLAY LIST JSR SCRO ;AT KILO BOUNDARY LDA DLR1+1 ;NOW CHANGE IT LDX DLI}R1 ;AT BEGINNING STA TEMP4 ;OF LIST AND STX TEMP3 ;STORE THE VALUE LDY J} #$5 ;FOR SCREEN JSR SCRO ;POSITIONING RTSGSCR: LDA GREEN ;GET PRESENK}T GREEN STA PCOLR4 ;VALUE AND SET COLOR LDX DLG2 ;POINT TO GREEN FRAME LDA L} DLG2+1 ;ADDRESS AND CHANGE LDY CNT ;THE KILO BOUNDARY JSR SCRO ;IN DISPLAY LISM}T LDA DLG1+1 ;POINT TO BEGINNING LDX DLG1 ;OF FRAME AND STORE STA TEMP4 N} ;THE ADDRESS FOR STX TEMP3 ;SCREEN POSITIONING LDY #$5 ;THEN CHANGE THE O} JSR SCRO ;DISPLAY LIST RTSBSCR: LDA BLUE ;GET PRESENT BLUE STA PCOLR4 P} ;VALUE AND SET COLOR LDX DLB2 ;POINT TO ADDRESS OF LDA DLB2+1 ;KILO BOUNDARY IN Q} LDY CNT ;BLUE FRAME AND JSR SCRO ;SET IN DISPLAY LIST LDA DLB1+1 ;POINR}T TO BEGINNING LDX DLB1 ;OF BLUE FRAME AND STA TEMP4 ;STORE IT FOR SCREEN STS}X TEMP3 ;POSITIONING LDY #$5 ;THEN SET THE JSR SCRO ;DISPLAY LIST POINTER T} RTSSCRO: STA (TEMP5),Y ;PUT THE VECTOR TXA ;IN PROPER PLACE DEY U} ;IN DISPLAY STA (TEMP5),Y ;LIST AND RTS ;RETURN* ROUTINES TO CYCLE TV}HE* COLOR ON EACH FRAMECOLR: JSR SCRR ;SET PROPER FRAME STA COLR+1 ;POINT TO NEXT W} STX COLR+2 ;FRAME IN LOOP STY PCOLR4 ;SET FRAME'S COLOR JMP XITVB ;GO SETX} INTERUPTSCRR: JSR RSCR ;GO SET RED SCREEN LDA FORMAT ;CHECK FOR B/W BNE BWSEY}T ;IN FORMAT LDA RED ;IF IS MAKE THE AND #$0F ;SCREEN BLACK TAY Z} ;BY STRIPPING TOP LDA #LOW SCRR ;POINT BACK TO LDX #HIGH SCRR ;RED SCREEN RT[}S ;AND QUITBWSET: LDA #LOW SCRG ;THEN SET POINTERS LDX #HIGH SCRG ;FOR GREEN SCREEN \} LDY RED ;AND GET RED HUE RTSSCRG: JSR GSCR ;GO SET GREEN SCREEN LDA ]} #LOW SCRB ;THEN SET POINTERS LDX #HIGH SCRB ;FOR BLUE SCREEN LDY GREEN ;AND GET GREEN HUE^} RTSSCRB: JSR BSCR ;GO SET BLUE SCREEN LDA #LOW SCRR ;THEN SET POINTERS LDX_} #HIGH SCRR ;TO RED SCREEN LDY BLUE ;AND GET BLUE HUE RTS EJECT****************`}************ DISK SERVICE ROUTINES* THESE ROUTINES WILL RETRIEVE* A PICTURE FROM DISK OR STORE* ONE ON DISK. THE PIa}CTURES * ARE HANDLED IN THREE SEPERATE* FILES, ONE FOR EACH COLOR * FRAME**************************** STORE PICTURb}E ROUTINEPUTIT: JSR CLICK ;SOUND KEY LDA ZON ;CHECK FOR EXPAND BEQ PT0 c} ;AND ABORT IF ON JMP KEYSPT0: LDY #$4 ;CHANGE THE COLORPT1: LDA #$7F ;OF THEd} DISK AND MENUD-1,Y ;MESSAGE ON THE STA MENUD-1,Y ;MENU PATTERN DEY BNE e} PT1 LDA #$8 ;SET THE COMMAND STA COM ;BYTE FOR WRITE LDA #$B f};MAKE IT A PUT STA AUX ;CHARACTER TYPE JMP DISKO ;AND GO DO SERVICE* GET PICTUg}RE ROUTINEGETIT: JSR CLICK ;SOUND KEY LDY #$6 ;CHANGE THE COLORGT1: LDA #$7F q}b%DOS SYSb*)DUP SYSb SAUTORUN SYSb_HELP DOCboSSTV DOCb&SSTV OBJb*SSTV MACbSSTV BIN ;OF THE MEMORY AND MENUM-1,Y ;LINE IN THE STA MENUM-1,Y ;MENU PATTERN DEY r} BNE GT1 LDA #$C ;OPEN FILE STA COM ;FOR READ/WRITE LDA #$7 s} ;AND MAKE IT A STA AUX ;GET CHARACTER TYPE* KEYBOARD AND DISK* HANDLER ROUITNESDISKO:t} LDA #$5 ;SET POINTER FOR STA EXTN ;'.R' EXTENSION LDY #$8 ;CHANGE THEu}PT2: LDA #$7F ;COLOR OF THE AND MENUFN-1,Y ;FILENAME LINE STA MENUFN-1,Y ;IN THE v}MENU DEY ;PATTERN BNE PT2 LDY #$7 ;BLANK OUT ANY LDA w} #$0 ;PRIOR NAME INKYBO: STA NAME+1,Y ;FILENAME STA FILE-1,Y DEY BNE x} KYBO LDA #LOW DLR1 ;SET POINTERS STA TEMP3 ;TO LOOK AT RED LDA #HIGH DLR1 ;y}FRAME FIRST STA TEMP4 LDX #$50 ;KYBD IS DEVICE 5 LDA #$3 ;OPEN COMMANDz} STA IC+2,X ;IN CIO LIST LDA #LOW KCO ;DEVICE NAME IS STA IC+4,X ;'K:' IN{} LDA #HIGH KCO ;CIO LIST STA IC+5,X LDA #$4 ;MAKE IT A READ STA |} IC+10,X ;ONLY DEVICE LDA #$0 ;IN CIO LIST STA IC+11,X LDA #$FF ;}}CLEAR ANY STA CH ;LINGERING KEYS JSR CIOV ;DO THE OPEN BPL K1 ~} ;CHECK FOR ERROR JMP WINDUPK1: LDY #$0 ;BLANK OUT A STY FORM ;SPARE AREA}K2: LDA #$7 ;MAKE A GET CHAR. STA IC+2,X ;COMMAND LDA #$0 ;WITH ONLY} 1 CHAR. STA IC+8,X ;PER OPERATION STA IC+9,X ;ONLY JSR CIOV ;GO GET }A KEY CMP #$9B ;CHECK FOR C/R BEQ K3 CMP #$30 ;MAKE SURE ITS }BCC K2 ;AN ALPHANUMERIC CMP #$5B ;CHARACTER BCS K2 ;ONLY LDY } FORM ;GET TEMP POINTER STA NAME+2,Y ;PUT CHAR IN NAME ORA #$20 ;CHANGE COLOR CH}AR STA FILE,Y ;AND PUT ON SCREEN INY ;POINT TO NEXT STY FORM ;}LOCATION CPY #$7 ;CHECK FOR 7 LETTERS BNE K2 ;AND RESET IF 7 JMP PUT}IT ;ELSE GET NEXT CHARK3: LDA #$0C ;PUT CLOSE COMMAND STA IC+2,X ;ON KYBD DEVICE } JSR CIOV ;AND CLOSEK5: LDA #$2 ;APPEND THE STA EXCNT ;EXTENSION ONTO } LDY FORM ;LAST OF NAME LDX EXTN ;'.R' '.G' ORK4: LDA EXTNAM,X ;'.B' } STA NAME+2,Y ;BUT KEEP TRACK INY ;OF HOW FAR DEX ;ALONG WE ARE } DEC EXCNT BNE K4 LDA #$9B ;PUT ON AN EOL STA NAME+2,Y ;AT END }OF NAME STX EXTN ;SAVE OFFSET OF LIST LDX #$60 ;MAKE DISK DEVICE LDA #$}3 ;#6 AND SET FOR STA IC+2,X ;OPEN COMMAND LDA #LOW NAME ;POINT TO THE STA} IC+4,X ;FILENAME JUST LDA #HIGH NAME ;ENTERED STA IC+5,X LDA COM ;G}ET THE TYPE OF STA IC+10,X ;ACCESS DESIRED LDA #$0 ;EITHER READ OR STA IC}+11,X ;WRITE JSR CIOV ;DO THE OPENING BPL D1 ;CHECK FOR ERROR JMP }ERRORD1: LDA AUX ;GET THE TYPE STA IC+2,X ;OF I/O DESIRED LDY #$0 ;G}ET/PUT CHAR LDA (TEMP3),Y ;POINT TO THE FRAME STA IC+4,X ;ADDRESS INY } ;FOR THIS LDA (TEMP3),Y ;FILE AND SET IT STA IC+5,X ;AS THE BUFFER LDA #$4 } ;INCREMENT THE CLC ;POINTER FOR THE ADC TEMP3 ;NEXT FRAME STA } TEMP3 ;AND STORE FOR BCC D10 ;NEXT FRAME FILE INC TEMP4D10: LDA #$D8 } ;EACH FRAME FILE STA IC+8,X ;SHOULD BE 5080 LDA #$13 ;BYTES LONG STA IC}+9,X JSR CIOV ;DO READ OR WRITE BPL D2 ;CHECK FOR ERRORS CPY #$88 } ;CHECK FOR END BEQ D2 ;OF FILE JMP ERRORD2: LDA #$0C ;SET FILE FOR } STA IC+2,X ;CLOSE COMMAND JSR CIOV ;AND CLOSE LDA EXTN ;CHECK TO SEE} THAT CMP #$FF ;ALL THE FRAMES BEQ WINDUP ;WERE SENT JMP K5 ;AND }GO FOR ANOTHERWINDUP: LDY #$4 ;RETURN THE WV1: LDA #$80 ;DISK LINE IN ORA MENUD}-1,Y ;MENU PATTERN TO STA MENUD-1,Y ;ORIGINAL COLOR DEY BNE WV1 LDY #$8} ;RETURN FILENAMEWV2: LDA #$80 ;LINE IN MENU ORA MENUFN-1,Y ;PATTERN TO STA } MENUFN-1,Y ;ORIGINAL COLOR DEY BNE WV2 LDY #$6 ;RESTORE MEMORYWV3: LDA } #$80 ;LINE IN MENU ORA MENUM-1,Y ;PATTERN TO STA MENUM-1,Y ;ORIGINAL COLOR } DEY BNE WV3 JMP KEYS ;DO KYBD SERVICEERROR: LDA #$FF ;SET HANDLER TO } STA EXTN ;END AND FOOL JMP D2 ;IT TO CLOSE EJECT**************************** } THIS ROUTINE IS USED* TO EXAPND THE FRAMES TO* FILL THE SCREEN. IT WILL* DROPOFF THE TOP AND BOTTOM* OF EACH FRAME I}N THE PROCESS***************************FULL: LDA #$FF ;CHECK FOR PRIOR CMP ZON ;EXPAN}SION AND BNE Z6 ;EXIT IF DONE JMP KEYS ;BEFOREZ6: STA ZON ;SET FO}R EXPANSION JSR CLICK ;SOUND KEY LDX DLR1+1 ;POINT TO THE RED LDY DLR1 } ;FRAME AND STORE STX TEMP2 ;THE POINTERS FOR STY TEMP1 ;LATER USE JSR }ZOT ;GO EXPAND LDX DLG1+1 ;POINT TO GREEN LDY DLG1 ;FRAME AND STORE ST}X TEMP2 ;THE POINTERS FOR STY TEMP1 ;LATER USE JSR ZOT ;GO EXPAND }LDX DLB1+1 ;POINT TO BLUE LDY DLB1 ;FRAME AND STORE STX TEMP2 ;THE POINTERS FO}R STY TEMP1 ;LATER USE JSR ZOT ;GO EXPAND JMP KEYS ;JUMP BACK AGA}INZOT: STY TEMP7 ;STORE ADDRESS STX TEMP8 ;FOR INDEXING LDA TEMP7 ;PICK }UP THE CLC ;BEGINNING ADDRESS ADC #$8 ;AND ADD 13 LINES BCC Z1 } ;OF 40 BYTES INC TEMP8 ;TO STRIP OFF THEZ1: STA TEMP7 ;TOP PART OF THE I}NC TEMP8 ;FRAMES INC TEMP8 ;13X40=208H STY TEMP3 ;SAVE THE TOP STX } TEMP4 ;OF THE FRAME LDX #$79 ;TO 120 LINESZ5: LDY #$28 ;OF 40 BYTESZ2: LD}A (TEMP7),Y ;GET A BYTE STA (TEMP3),Y ;AND MOVE IT UP DEY ;KEEP TRACK }BNE Z2 ;OF EACH LINE LDA (TEMP7),Y ;GET THE LAST STA (TEMP3),Y ;OF EACH LINE } LDA #$28 ;SET FOR 40 BYTES CLC ;AND ADD TO THE ADC TEMP3 ;INDEX TO }POINT BCC Z3 ;TO THE NEXT INC TEMP4 ;LINEZ3: STA TEMP3 LDA }#$28 ;POINT TO THE CLC ;NEXT LINE OF ADC TEMP7 ;ACTUAL STORAGE }BCC Z4 ;TO MOVE THE FRAME INC TEMP8 ;UP Z4: STA TEMP7 DEX };IS THE FRAME DONE BNE Z5 ;DO MORE LDX TEMP1 ;RETRIEVEBEGINNING STX TE}MP3 ;OF THE FRAME LDA TEMP2 ;AND OFFSET IT CLC ;BY THE 96 LINES AD}C #$F ;WHICH WILL BE STA TEMP4 ;EXPANDED LDA TEMP1 ;ADJUST FOR THE } CLC ;EXTRA LINE ADC #$28 ;AT THE END BCC Z7 INC TEMP2Z7: } STA TEMP1 LDA TEMP2 ;NOW OFFSET THE CLC ;POINTER BY ADC #$1}E ;TWICE THE 96 STA TEMP2 ;LINES 192 LINES LDX #$61 ;COUNTER FOR STX } TEMP5 ;96 LINESF7: LDX #$2 ;DUP EACH LINEF5: LDY #$28 ;40 BYTES PER LINEF3: } LDA (TEMP3),Y ;GET A BYTE STA (TEMP1),Y ;AND STORE IT DEY ;LINE DONE? } BNE F3 LDA (TEMP3),Y ;DO END OF STA (TEMP1),Y ;EACH LINE LDA TEMP1 ;D}ROP BACK SEC ;ONE LINE SBC #$28 ;OF 40 BYTES BCS F4 ;AND }GETREADY DEC TEMP2 ;FOR MOREF4: STA TEMP1 DEX ;HAS LINE BEEN } BNE F5 ;COPIED TWICE LDA TEMP3 ;DROP 40 BYES SEC ;FROM FULL } SBC #$28 ;SCREEN AND GET BCS F6 ;READY FOR MORE DEC TEMP4F6: STA }TEMP3 DEC TEMP5 ;CHECK IF ALL BNE F7 ;96 LINES ARE DONE RTS } ;IF SO END EJECTRED: .BYTE $41GREEN: .BYTE $C1BLUE: .BYTE $91RSHD: .BYTE $1GSHD: } .BYTE $1BSHD: .BYTE $1SPD1: .BYTE $58,$4E,$55SPD2: .BYTE $51,$52,$0SPD3: .BYTE $52,$54,$0FORM}AT: .BYTE $A8FORM: .BYTE $0SCRPNT: .BYTE $0,$0VBINT: .BYTE $0,$0 WING: .BYTE $0CNT: .BYTE } $65ON: .BYTE $0OFF: .BYTE $0VON: .BYTE $0ZON: .BYTE $0COMP: .BYTE $0DLR1: .BYT}E $50,$81DLR2: .BYTE $00,$90DLG1: .BYTE $50,$61DLG2: .BYTE $00,$70DLB1: .BYTE $50,$41DLB2: } .BYTE $00,$50EXTN: .BYTE $0EXTNAM: .BYTE 'B.G.R.'EXCNT: .BYTE $0COM: .BYTE $0AUX: .BYTE }$0KCO: .BYTE 'K:'NAME: .BYTE 'D:' .BYTE 0,0,0,0,0,0,0 EJECT ORG $3E70DLST}: .BYTE $70,$70,$70,$4F,$50,$81 .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$}0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,}$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F} .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE }$0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$4F,$00,$90,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F},$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0}F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .}BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0}F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$0F,$0F,$0F .BYTE $0F,$0F,$0F,$0F,$41,LOW DLST,HIGH DLST ORG } $3F3DMENU: .BYTE $70,$70,$70,$46,$60,$3F .BYTE $06,$06,$06,$06,$06,$06,$06 .BYTE $46,$00,$40,$06,$06,$06,$06 }.BYTE $06,$06,$06,$06,$06,$06,$06 .BYTE $06,$06,$06,$06 .BYTE $41,LOW MENU,HIGH MENU ORG $3F76 .BYT}E $61,$74,$61,$72,$69 ORG $3F80 .BYTE $73,$73,$74,$76 ORG $3F8A .BYTE $FF,$FF,$FF,$FF,$FF},$FF,$FF .BYTE $FF,$FF,$FF,$FF,$FF,$FF,$FF ORG $3FB3 .BYTE $E6,$EF,$F2,$ED,$E1,$F4 ORG $3}FBA .BYTE $51,$F8,$51,$F8,$51 ORG $3FE2 .BYTE $58,$4E,$55,$0,$F3,$E5,$E3 ORG $402B .B}YTE $E4,$E9,$F3,$EB,$0,$0,$0 .BYTE $ED,$E5,$ED,$EF,$F2,$F9 ORG $407B .BYTE $E5,$F2,$E1,$F3,$E5 } ORG $4082 .BYTE $F6,$E9,$E5,$F7 ORG $40CB .BYTE $E6,$E9,$EC,$E5,$EE,$E1,$ED .BYTE $E5 w00L1c=?01L0(L02=LD2LX2LS168L0L4:L4L1%L1>}L1*L1L0ЉL66 2L06 Ў 2L0 Ѕϩ62 P?6L21Q?8.}668n016L21©R?v66L218.68.6n6L216n6 Ћ6ۍ6L0.6L0 66 \䩿-oo6}601666PL0 6? T36L0 6?T36L0 6?T36L0 9z@z@66 }266 26126 2z@z@6L0͆΢(͈(e͐΅` 6@ l266L0 6 l266L0 6 l2}66L0 ͢`0166>p˅̎01@ oo6>6666 3 3L26 3 3L26 !4} 3L26$%62364J \` r3y 6` 8n6` G3 G3Б( 3`66Ϣ)}eυJJJJ66`66ϭ6L3666L3``` 3(e͐ͅέ`}66)666 C43466Ά͠ C4`6666 C466Ά͠ C4`6776 C466Ά͠ C4`ˊ` Y4K}4L4Lb 36 6)Y4`t46` 346` !4Y46` 6L09*@*@ 7 7L4 91@1@ 7 7}79@@7@456΢PB D7EJK VL56BHI Vɛ0[67 @}6L4 B V 76777 7󩛙77`BD7E 7JK VL 6 7B͝Dȱ͝Ee͐ͅΩ؝HI} VL 6 B V7LW5*@56*@@@1@1@L07L56L06 66Є M666Є }M666Є M6L0Ɇʥiʅʄ͆΢y(ɑ͈ɑͩ(e͐΅ͩ(eɐʅڦφͥiΥi(ЅϥiТaˢ(͑ψ}͑ϥ8(Ѕ8(΅`AXNUQ67RRTePPapPAPB.G.R.K:D:p>9?pppOP}O}Ap>=?^?pppF`?F@A=?v?z?atari??sstv??}????QQQ??XNU+@7@{@@@@@@A=?v?z?atari??sstv??U