@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@W1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}}540 |||DDOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED COPYING---DN:4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 1.?}D1:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 170ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4u% 1B@@V1notify prospective change;B@AU;seV}t up all joystick pins for output0B@@`0lock new system in place()B@)turn all pins off2W}B@ @P D:SETUP.BAS 1B@@V1notify prospective change;B@AU;se.**On/off flasher for mains control box KB@@V'B@AU9B@ Y}@`KB@6--!6-%+",&+"@,-B@(%-@A % @0 Z} D:MAINS1.BAS**On/off flasher for mains control box KB@@V'B@AU9B@ //Simple delay switch for mains control box KB@@V'B@AU\}9B@@`KB@ INPUT TIME DELAY-@ (B@@ D:MAINS2.]}BAS//Simple delay switch for mains control box KB@@V'B@AU';mmMains box can be controlled by a resistive sensor (eg CDS cell) connected acro_}ss pins 7 and 9 at Port 1 KB@@V'B@AU9B@@`KB@4F:A$,!@`}*B@@4 @ B@ @  D:MAINS3.BAS resistive sensor (eg CDS cell) connected acroO#==Numeric Keypad: Version runs as part of  Basic program --@Y")Ab}7%- LL104,162,6,160,12,169,7,32,92,228,96,173,120,2,73,15,240,21,174,0,6,208NN19,134,77,170,202,189,46,6,141c},252,2,141,0,6,76,98,228,141,0,6,76,98,228(6631,30,26,24,29,27,51,53,48,50,142,143,12,134,1352aaLine 40 contains the 15d} key codes for: 1,2,3,4,5,6,7,8,9,0,Cursor up,down,RETURN,left,right<6-?:A7, D:KEYPAD1.BAS?:A7,A|PRSct66Numeric Keypad: Creates an AUTORUN.SYS Disk file ..@@ D:AUTOf}RUN.SYS,-@A"(*@, NN255,255,32,29,124,29,165,12,141,54,29,165,13,141,55,29,169,53,133,12g},169(RR29,133,13,76,56,29,32,75,29,169,126,141,231,2,169,29,141,232,2,162,29,160,762PP169,7,32,92,228,96,173,120,2,73,1h}5,240,21,174,125,29,208,19,134,77,170,202<DD189,110,29,141,252,2,141,125,29,76,98,228,141,125,29,76,98,228F6631,30,26,2i}4,29,27,51,53,48,50,142,143,12,134,135P224,2,225,2,32,29 D:KEYPAD2.BASNO SUCH ITEMSELj}Numeric Keypad: Creates an AUTORUN.SYS Disk file ..@@ D:AUTO&05 ;Numeric Keypad: Source code for version 1 (Accessed by X=USR(1537)10 ATRACT=$4D20 CH=$2FC30 FLAG=$60040 KEYPAD=$2785 l}0 SETVB=$E45C60 XITVBL=$E46270 *=$60180 VBSET90 PLA0100 LDX #VBCODE/2560110 LDY #VBCODE&2550120 LDA #70130 JSR m}SETVB0140 RTS0150 VBCODE0160 LDA KEYPAD Read pad0170 EOR #15 Invert the bit pattern0180 BEQ ZFLAG Br n}anch if no key pressed0190 LDX FLAG Branch if same key0200 BNE EXIT still held down0210 STX ATRACT Prev o}ent colour rotation0220 TAX Use Keypad value as0230 DEX index into TABLE, to find0240 LDA TABLE,X p} corresponding character0250 STA CH Store it in character register0260 STA FLAG Set Flag >0 (disable key q}s)0270 JMP XITVBL and exit0280 ZFLAG0290 STA FLAG Set flag =0 (enable keys)0300 ;0310 EXIT0320 JMP XITVBL r} and exit0330 TABLE0340 ;Contains hardware key codes for0350 ;1,2,3,4,5,6,7,8,9,0, Cursor up, cursor down, RETURN, curs s}or left and cursor right0360 .BYTE 31,30,26,24,290370 .BYTE 27,51,53,48,500380 .BYTE 142,143,12,134,135n, RETURN, curs n05 ;Numeric Keypad: Source code for version 2 (AUTORUN.SYS file)10 ATRACT=$4D20 CH=$2FC30 DOSINI=$0C40 KEYPAD=$27850 MEM$u}LO=$2E760 SETVB=$E45C70 XITVBL=$E46280 *=$1D2090 COLDST0100 LDA DOSINI Trap SYSTEM RESET0110 STA WARMST+1 $v} routine0120 LDA DOSINI+10130 STA WARMST+20140 LDA #WARMST&2550150 STA DOSINI0160 LDA #WARMST/2560170 STA DOSINI$w}+10180 JMP WMST20190 WARMST0200 JSR OLDINIT0210 WMST20220 LDA #FINISH&255 Reset MEMLO to0230 STA MEMLO pr$x}otect our new0240 LDA #FINISH/256 machine code0250 STA MEMLO+10260 LDX #VBCODE/256 Insert new vertical0270 LDY #V$y}BCODE&255 blank vector0280 LDA #70290 JSR SETVB0300 OLDINIT0310 RTS0320 ;0330 VBCODE0340 LDA KEYPAD Read $z}pad0350 EOR #15 Invert the bit pattern0360 BEQ ZFLAG Branch if no key pressed0370 LDX FLAG B${}ranch if same key0380 BNE EXIT still held down0390 STX ATRACT Stop colour rotation0400 TAX $|} Use Keypad value as0410 DEX index into TABLE, to find0420 LDA TABLE,X corresponding character0430 $}} STA CH Store result in character register0440 STA FLAG Set Flag >0 (disable keys)0450 JMP XITVBL $~} and exit0460 ZFLAG0470 STA FLAG Set Flag =0 (enable keys)0480 EXIT0490 JMP XITVBL and exit0500 TAB$}LE0510 .BYTE 31,30,26,24,290520 .BYTE 27,51,53,48,500530 .BYTE 142,143,12,134,1350540 FLAG *=*+10550 FINISH0560 *=$$}2E00570 .WORD COLDST,24,290520 .BYTE 27,51,53,48,500530 .BYTE 142,143,12,134,1350540 FLAG *=*+10550 FINISH0560 *=$$ ZZlRQZ!Basic version to make AUTORUN.SYS file containing hex keypad driver ..@(}@ D:AUTORUN.SYS""6@*@ @ (255,255,32,29,126,292II165,12,141(},54,29,165,13,141,55,29,169,53,133,12,169,29,133,13,76,56<HH29,32,75,29,169,145,141,231,2,169,29,141,232,2,162,29,160,76,1(}69,7FHH32,92,228,96,173,132,2,10,10,10,10,141,127,29,173,120,2,24,109,127PLL29,73,31,240,24,141,127,29,174,128,29,208,1(}9,134,77,170,202,189,129,29ZGG141,252,2,141,128,29,76,98,228,141,128,29,76,98,228,129,29,144,29d++Line 90 contains the (}sixteen keycodesn5550,31,30,26,24,29,27,51,53,48,63,21,18,58,42,56x''Line 120 contains only the footer224,2,225,2(},32,29,-1 D:HEXPAD.BASlRQZ!Basic version to make AUTORUN.SYS file containing hex keypad driver ..@(05 ;Source code for Hex keypad (AUTORUN.SYS file)10 ATRACT=$4D20 CH=$2FC30 DOSINI=$0C40 MEMLO=$2E750 SETVB=$E45C60 STIC,}K=$27870 STRIG=$28480 XITVBL=$E46290 *=$1D200100 COLDST0110 LDA DOSINI Trap SYSTEM RESET0120 STA WARMST+1 ,} routine0130 LDA DOSINI+10140 STA WARMST+20150 LDA #WARMST&2550160 STA DOSINI0170 LDA #WARMST/2560180 STA DOSINI,}+10190 JMP WMST20200 WARMST0210 JSR OLDINIT0220 WMST20230 LDA #FINISH&255 Reset MEMLO to0240 STA MEMLO pr,}otect our new0250 LDA #FINISH/256 machine code0260 STA MEMLO+10270 LDX #VBCODE/256 Insert new vertical0280 LDY #V,}BCODE&255 blank vector0290 LDA #70300 JSR SETVB0310 OLDINIT0320 RTS0330 VBCODE0340 LDA STRIG0350 ASL A0360 AS,}L A0370 ASL A0380 ASL A0390 STA TEMP10400 LDA STICK Read pad0410 CLC0420 ADC TEMP10430 EOR #31 ,} Invert the bit pattern0440 BEQ ZFLAG Branch if no key pressed0450 STA TEMP10460 LDX FLAG Branch if s,}ame key0470 BNE EXIT still held down0480 STX ATRACT Stop colour rotation0490 TAX Use Keyp,}ad value as0500 DEX index into TABLE, to find0510 LDA TABLE,X corresponding character0520 STA CH ,} Store it in character register0530 STA FLAG Set Flag >0 (disable keys)0540 JMP XITVBL and exit0,}550 ZFLAG0560 STA FLAG Set Flag =0 (enable keys)0570 EXIT0580 JMP XITVBL and exit0590 TEMP1 *=*+10600 ,}FLAG *=*+10610 TABLE0620 ;Keycode values go here0630 .BYTE 50,31,30,26,240640 .BYTE 29,27,51,53,480650 .BYTE 63,21,18,},58,42,560660 FINISH0670 *=$2E00680 .WORD COLDST0 .BYTE 50,31,30,26,240640 .BYTE 29,27,51,53,480650 .BYTE 63,21,18,6 KE$$Musical keyboard, test program "AR@" >:A%,-@@--6-0}@1&F:A2,&@$F:AD,(   @  D:MUSIC1.BAS" >:A%,-@@--6-0N  4PKEPEK@@ZZMusic keyboard - vertical blank routine reads the note4} and stores it in address 1791 F-@5")AU%- FVertical Blank RoutineGG104,162,6,160,230,14}69,7,32,92,228,96,173,132,2,10,10,10,10,24,10988120,2,73,31,141,255,6,240,4,169,0,133,77,76,98,228(S6-?:AU,Ske4}y value (1 to 25) now automatically returned at address 17912D9@%,$-@%("168,-5 DPitch val4}ues<770,193,182,173,162,153,144,136,128,121,114,108,102F,,96,91,85,81,76,72,68,64,60,57,53,50,47P5+28F:A4},,@@5 @ D:MUSIC2.BAS@ZZMusic keyboard - vertical blank routine reads the note4305 ;Source code for Musical Keyboard VB routine (MUSIC2.BAS)06 ;Combines stick and trigger inputs into a single 5-bit word, 8}and stores it at address 179110 ATRACT=$4D20 HOLD=$6FF30 STICK=$27840 STRIG=$28450 SETVB=$E45C60 XITVBL=$E46270 *=$6D8}B80 PLA90 LDX #VBCODE/2560100 LDY #VBCODE&2550110 LDA #70120 JSR SETVB0130 RTS0140 VBCODE0150 LDA STRIG0160 8}ASL A0170 ASL A0180 ASL A0190 ASL A0200 CLC0210 ADC STICK0220 EOR #310230 STA HOLD0240 BEQ EXIT0250 LDA #08}0260 STA ATRACT0270 EXIT0280 JMP XITVBL00 CLC0210 ADC STICK0220 EOR #310230 STA HOLD0240 BEQ EXIT0250 LDA #08,-. PKEPEKNOTELENGTHPITCHFINISTIME@@@@@<} @ HHMusical keyboard: Allows tune editing and replay at variable temp<}o "AR@"(>:A%,F-@5")AU%- FVertical Blank routineGG104,162,6,160,<}230,169,7,32,92,228,96,173,132,2,10,10,10,10,24,109(88120,2,73,31,141,255,6,240,4,169,0,133,77,76,98,2282S6-?:AU,<}Skey value (1 to 25) now automatically returned at address 1791<D9@%,$-@%("168,-5 DPitc<}h valuesF770,193,182,173,162,153,144,136,128,121,114,108,102P,,96,91,85,81,76,72,68,64,60,57,53,50,47ZV9A,<}9A,Vmaximum number of notes allowed - change it if necessaryd## >:A%,START WHEN READYn!6-!Ad<}AUx6 F:A,"A 6wait for first noteE@ $6-F:A,Estart timer and read <}key value.68,-8,.get pitch value for that keyB"28,@@Bgenerate the appropriate toneY<}F:Ad,AU*AdAU4 AYbranch if any keyboard key pressed<"F:A,A`<wait until <}value of KEY changesU68h!68,-5 6-+25 A -- A` -Replay tune+ <}>:A%,+ PressOPTION to edit SELECT to replay START to start again F:B2y,"@A<}>F:B2y,"@((0( INPUT TEMPO 4> A"F:B2y,"@" A AP"Z6-6@<}6-@) >:A%,Z Press>:@',>:@), for next step,33 >:@',>:@(, to repeat last step<}6$$ SPACE bar to edit this step@ RETURN to exitJY-@@(Step0-@@:(PitchL-@'<}@Y(DurationT!A ^AdAUh F:Ad,"AUA`r<F:Ad,"@$!<}26-&@< A|6F:Ad,"@ ,6-%@6 A"F:Ad,"@3" A04F:A<}d,"@*AdAU4 A Z-@@( 0-@ @<(8, N-@6@Z(8<},  A` A@4-@@4 Input new PITCH,DURATION  68,-68,-%(>:@(,<}>:AV,% A2"28,@@2generate tone@ @F:@ , 8,'A@<}hold it for specified duration:%27AdAU:$ D:MUSIC3.BAS8,'A@<n.CCLow-voltage controller: "chaser" effect across all 4 channel@}s qB@@V'B@AU9B@@`KB@qset up joystick ports for outputA #@p@}-@$"$Get channel control number(&B@&Turn that channel on29-@@` 9sets @}speed of chaser effect<  @ F 1,2,4,8D:LOWVOLT1.BASthat channel on29-@@` 9sets @K >ESPACKKLow-voltage controller: Speed control using D}variable Mark/Space ratio KB@@V'B@AU9B@@`KB@( SET MARK,SPACED}(Set speed+B@@+Switch on channel 1(#-@ #"On" period2(B@(All chanD}nels off<$-@ $"Off" periodF @0D:LOWVOLT2.BAS#"On" period2(B@(All chanDPPEK@((16-Way rotary switch: Test program +@16-F:AD,$-@ @H}1(@!A@$! @  D:ROTARY1.BAS program +@16-F:AD,$-@ @HCdd16-Way rotary switch: Vertical blank routine stores sensor values in a table from 1774 L}to 1789 F-@c")A%- FStore the machine codeII104,169,56,141,2,211,169,255,141,0,211,169L},60,141,2,211,169,0,141,0HH211,141,255,6,162,6,160,208,169,6,32,92,228,96,174,255,6,173,2,210(TT157,238,6,232,224,16,1L}44,2,162,0,142,255,6,138,10,10,10,10,141,0,211,76,95,2282K6-?:A,KNew routine now executed during stage 1 verticalL} blank<1AR@" >:A%,1clear screenF-@@Pj-@- F:At%, 1 L}; @pjPrint current values for all sixteen sensors D:ROTARY2.BASj-@- F:At%, 1 LO05 ;16-Way Rotary Switch: Vertcal Blank routine stores analogue sensor values in a table from 1774 to 178910 COUNT=$6FF20 PP}ACTL=$D30230 POT2=$D20240 PORTA=$D30050 SETVBV=$E45C60 TABLE=$6EE70 SYSVBV=$E45F80 *=$6AE90 PLA0100 LDA #56 P} Set up joystick0110 STA PACTL ports for output0120 LDA #2550130 STA PORTA0140 LDA #600150 STAP} PACTL0160 LDA #0 Set all outputs0170 STA PORTA to zero0180 STA COUNT0190 LDX #VBCODE/25P}6 Set new vector for0200 LDY #VBCODE&255 immediate VBLANK0210 LDA #60220 JSR SETVBV0230 RTS0240 VBCODEP}0250 LDX COUNT Get channel number0260 LDA POT2 Read pot value0270 STA TABLE,X StoP}re it in TABLE0280 INX Next channel?0290 CPX #160300 BCC OK Branch if <160310 LDXP} #0 Else reset to 00320 OK0330 STX COUNT Update counter0340 TXA0350 ASL A P} Shift COUNT four0360 ASL A places left, to0370 ASL A get the binary0380 ASL A P} number & switch0390 STA PORTA to next channel0400 JMP SYSVBV Exit vertical blank P{PEK@**Sound-activated switch: Test program +@16-F:AD,$-@ @T}1(@!A@$! @ D:SOUNDSW1.BASprogram +@16-F:AD,$-@ @TFDELAIISound-activated switch: Short delay before returning to "off" state +@X}16-F:AD,$-@ @1(@'"#-@A' ( @ D:SOUNDSW2.BASXy /,,Sound-activated switch: "Talking Head" 1 +@A @@1Ag @\},@@1/@&@C/@&@U/@@g/@@9,@@',@#\}@9,@ @ (1 @,@@1/@#@2y @,@@1/@@\}C,@#@U/@"@g/@"@y/@@<:6-F:AD,"@0A: @`\}F!"!A@@P @`D:SOUNDSW3.BAS@A @@1Ag @\I--Joystick Printer Interface: Diskversion FFCreates an AUTORUN.SYS file from the data `}which start at line 70..@@ D:AUTORUN.SYS6-(""6@2*@ `}@@<ppLine 70 contains the header data (file type, load address, end address). 80 onwards contain the interface.F`}255,255,0,29,133,29PII165,12,141,14,29,165,13,141,15,29,76,16,29,32,44,29,169,134,141,231ZHH2,169,29,141,232,2,169,13,1`}33,12,169,29,133,13,169,45,141,27,3,169dEE29,141,28,3,96,56,29,74,29,130,29,97,29,130,29,130,29,162,0,173nKK16,208,240,`}6,202,208,248,160,138,96,162,255,76,77,29,162,0,169,56,141xHH2,211,142,0,211,169,60,141,2,211,169,128,141,0,211,160,1,96,1`}74,16KK208,208,251,201,155,208,2,169,13,9,128,141,0,211,32,133,29,41,127,141GG0,211,234,9,128,141,0,211,160,1,96,160,`}146,96,224,2,225,2,0,29,-1\\the last six bytes are a footer which stores the Run address into RUNAD (736 and 737).`}D:JOYPRNT1.BAS--Joystick Printer Interface: Diskversion FFCreates an AUTORUN.SYS file from the data `$BF22Joystick Printer Interface: Cassette version MMCreates an Autoboot cassetd}te file from the data which start at line 160b$6-+F:A,&@$,$AVbreserve a safe area at the top of RAM as d}a temporary buffer]-@F")A6%- ]Load the Autoboot creator program into page 6(UULines 40d} to 60 contain the program which will create an autoboot cassette file.2PP104,104,133,204,104,133,203,104,133,206,104,133,d}205,162,16,169,11,157,66,3<II165,203,157,68,3,165,204,157,69,3,165,205,157,72,3,165,206,157,73,3F32,86,228,96,67,58,1d}55PKKLoad the interface program temporarily into the reserved buffer spaceZ6-#Ad""6@Ad}0n# %6-%@# AxPPNow read the data from the temporary buffer into an Autoboot cassette file##d}@@A(C:))6-?:A6<00240 LDA #0 else make it 00250 STA HPOS0260 BE:}Q VERT unconditional, in effect0270 CHKRT0280 CMP #1600290 BCC HORZOK Branch if <1600300 LDA;} #159 else make it 1590310 HORZOK0320 STA HPOS Result is X co-ordinate0330 VERT0340 LDA POT<}B Read value of POT B0350 SEC0360 SBC #40 Subtract 400370 CHKTOP0380 BCS CHKBTM =} Branch if >00390 LDA #0 else make it 00400 STA VPOS and store it0410 BEQ EXIT0420 CHK>}BTM0430 CMP VMAX0440 BCC VERTOK Branch if > bottom margin0450 LDA VMAX else set it = bottom m?}argin0460 VERTOK0470 STA VPOS Result is Y co-ordinate0480 EXIT0490 JMP XITVBL Exit from VB ro@}utine0460 VERTOK0470 STA VPOS Result is Y co-ordinate0480 EXIT0490 JMP XITVBL Exit from VB ro05 ;Analogue joystick: Sketchpad routine (Source code for ANSTICK4.BAS)10 GRACTL=$D01D20 HPOS=$6FE30 HPOSP0=$D00040 PCOLRB}0=$2C050 PMBASE=$D40760 POTA=$27070 POTB=$27180 SDMACTL=$22F90 SETVB=$E45C0100 TEMP1=$CB0110 TEMP2=$CD0120 VMAX=$6FDC}0130 VPOS=$6FF0140 XITVBL=$E4620150 *=$6000160 ;0170 ;Call by X=USR(1536,PMBASE)0180 ;0190 USRCALL0200 PLA0210 PLAD}0220 PLA0230 STA PMBASE0240 CLC0250 ADC #2 Find high byte of player0260 STA TEMP1+1 image table0270 STE}A TEMP2+10280 LDA #0 Low byte must be 00290 STA TEMP10300 STA TEMP20310 TAY0320 LDX #20330 ERASE0340 STAF} (TEMP1),Y Erase last two pages0350 DEY in PM data area0360 BNE ERASE0370 INC TEMP1+10380 DEX0390 BNE EG}RASE0400 LDA #79 Default for VMAX0410 STA VMAX assumes split screen0420 LDA #14 Cursor colour is whH}ite0430 STA PCOLR00440 LDA #3 Initialise PM registers0450 STA GRACTL0460 LDA #46 Enable PM graphics04I}70 STA SDMACTL with 2-line resolution0480 LDX #VBCODE/256 Insert new vertical0490 LDY #VBCODE&255 blankJ} routine0500 LDA #70510 JSR SETVB0520 INITDOS0530 RTS Return to BASIC0540 VBCODE0550 LDA POTA If PK}OTA<0 then POTA=00560 SEC0570 SBC #200580 CHKLEFT0590 BCS CHKRT0600 LDA #00610 STA HPOS0620 BEQ VERT0630 CHKRTL}0640 CMP #160 If POTA>159 then POTA=1590650 BCC HORZOK0660 LDA #1590670 HORZOK0680 STA HPOS Store horizonM}tal value0690 VERT0700 LDA POTB0710 SEC0720 SBC #400730 CHKTOP0740 BCS CHKBTM0750 LDA #00760 STA VPOS0770 BEQN} CLEAR0780 CHKBTM0790 CMP VMAX0800 BCC VERTOK0810 LDA VMAX0820 VERTOK0830 STA VPOS Store vertical value0840 O}CLEAR0850 LDA VCPOS0860 CLC0870 ADC #50880 TAY0890 LDX #50900 LDA #00910 WIPE0920 STA (TEMP2),Y Clear old curP}sor image0930 DEY0940 DEX0950 BPL WIPE0960 CONVERT0970 LDA HPOS Convert screen co-ordinates0980 CLC Q} into corresponding0990 ADC #46 PM co-ordinates1000 STA HCPOS1010 STA HPOSP0 Set horizontal position1020 R} LDA VPOS1030 CLC1040 ADC #141050 STA VCPOS1060 TAY1070 LDX #ENDIMAGE-IMAGE-1 Load image size1080 DRAW1090 LDA S}IMAGE,X Draw cursor image1100 STA (TEMP2),Y1110 INY1120 DEX1130 BPL DRAW1140 JMP XITVBL1150 IMAGE1160 T} .BYTE 32,32,248,32,321170 ENDIMAGE1180 HCPOS *=*+11190 VCPOS *=*+1 DEX1130 BPL DRAW1140 JMP XITVBL1150 IMAGE1160 G- Speech Synth: Test program I6-@2Icode number for allophone to be tested (canV} be 0 to 63)eB@@V'B@AU9B@@`KB@eset up ports for output4B@W}%A(4send code with strobe high(: F:AD,"@@@:wait for "ready" signal2LB@#B@X}%A(Lpulse strobe line low, then high again<E-@@P Eshort delay to avoid sharp sound cutoffF8Y}B@'B@A(8turn sound off D:SPEECH1.BAS-@2Icode number for allophone to be tested (canG ffSpeech Synth: Using DATA statements to produce strings of speech sounds (LIne 80 says "[}COMPUTER" SB@@V'B@AU9B@@`Sset up ports for output""6@9B@\}%A(9send code with strobe line high(: F:AD,"@@@:wait for "ready" signal2FB@#B]}@%A(Fpulse strobe low then high again< @ F,,The following codes produce "COMPUTER"P!!42,23,16,9,4^}9,22,13,51,0,-1 D:SPEECH2.BASSpeech Synth: Using DATA statements to produce strings of speech sounds (LIne 80 says "%8A88Speech Synth: Simple ASCII-to Allophone translator`} eB@@V'B@AU9B@@`KB@eset up ports fpr outputN;A,Nmaxima}um number of allophones - change this to suit yourselfK-Ap")A6%- Kinsert 'translator' roub}tine(JJ104,104,104,201,48,144,61,201,53,176,5,56,233,47,16,54,201,65,144,482II201,91,176,5,56,233,59,208,41,201,97,144,c}35,201,123,176,5,56,233,65<MM208,28,201,193,144,22,201,219,176,5,56,233,135,208,15,201,239,144,9,201FFF246,176,5,56,233d},155,208,2,169,0,170,189,80,6,141,255,6,160,1,96P;;255,0,1,2,3,4,26,63,8,33,7,40,36,27,12,10,42,45,16,56Z==24,9,0,15,55e},14,15,35,46,0,25,43,59,28,50,21,19,0,61,57d996,0,41,62,0,11,53,0,0,39,37,18,22,0,48,0,49,38,20,0n550,0,52,0,34,51,0,0,f}0,0,0,44,23,0,0,60,0,54,30,0x 32,0,5,0,58,0,0,47,0,29,31))allophone string, in ASCII form<-@B:,-6g}-?:A6<@:7<,,,<6-F:A,G6-F:A,Gcorrect allophone code, translated from ASCII form4B@%Aq}b'DOS SYSb*+DUP SYSbUSETUP BASbXMAINS1 BASb[MAINS2 BASb^MAINS3 BASbaKEYPAD1 BASbeKEYPAD2 BASb kKEYPAD1 SRCb tKEYPAD2 SRCbHEXPAD BASbHEXPAD SRCbMUSIC1 BASbMUSIC2 BASbMUSIC2 SRCbMUSIC3 BASbLOWVOLT1BASbLOWVOLT2BASbROTARY1 BASbROTARY2 BASb ROTARY2 SRCbSOUNDSW1BASbSOUNDSW2BASbSOUNDSW3BASb JOYPRNT1BASb JOYPRNT2BASbJOYPRNT1SRCb JOYPRNT2SRCbANSTICK1BASb ANSTICK2BASb#ANSTICK3BASb )ANSTICK4BASb 4ANSTICK3SRCbAANSTICK4SRCbUSPEECH1 BASbZSPEECH2 BASb _SPEECH3 BASb$tSPEECH4 BASbSPEECH5 BASbDISCO1 BASbDISCO2 BASbDISCO3 BASbDISC04 BASbDISCO5 BASb DISCO6 BASbREMOTE1 BASbREMOTE2 BASbQUIZBOX1BASbQUIZBOX2BASbQUIZBOX3BASbQUIZBOX4BASb QUIZBOX SRCB&README TXT(4send code with strobe high: F:AD,"@Ap:wait for "ready" signalLB@#B@%A(r}Lpulse strobe line low, then high again :-@@P :short pause at end of speech8B@s}'B@A(8turn sound off A0 D:SPEECH3.BASSpeech Synth: Simple ASCII-to Allophone translatorJ:;;=RABCDEFGHIJKLMNOPQRSTUVWXYZu} v}IISpeech Synth: Demonstration of selected pw}hrases, using ASCII system "F:AD,"@" AZB@@V'B@AU9B@@`KB@x}Zset up portsI-Ap")A6%- Iinsert Translator routine(JJ104,104,104,201,48,14y}4,61,201,53,176,5,56,233,47,16,54,201,65,144,482II201,91,176,5,56,233,59,208,41,201,97,144,35,201,123,176,5,56,233,65<MMz}208,28,201,193,144,22,201,219,176,5,56,233,135,208,15,201,239,144,9,201FFF246,176,5,56,233,155,208,2,169,0,170,189,80,6,1{}41,255,6,160,1,96P;;255,0,1,2,3,4,26,63,8,33,7,40,36,27,12,10,42,45,16,56Z==24,9,0,15,55,14,15,35,46,0,25,43,59,28,50,2|}1,19,0,61,57d996,0,41,62,0,11,53,0,0,39,37,18,22,0,48,0,49,38,20,0n550,0,52,0,34,51,0,0,0,0,0,44,23,0,0,60,0,54,30,0x}} 32,0,5,0,58,0,0,47,0,29,31RR;@@,;@@,;@@,;@@,;@@,;@@,;@@,RR;@@~},;@@,;@@,;@@,;@@,;@@,;@@,RR;@@,;@@,;@@,;@@,;@@},;@@,;@@,,6.HELo3An0WELCUM4,Hello and welome+6.MEr0e1ChrISMAS4+Merry Christmas(6. HAP}y3BH1D4(Happy birthday46.4PLeZ3D11NOH4D0U3c44Please do not touch6.2c4Ouch!>"6.4PrI0P3D13Me}2D3Y4DM4>Prepare to meet your doom<"6.4e2ANSS2IZ4F0D1e2D14<The answer is forty-two26.WnSS2UPU3D1iyM}42Once upon a time...06.4PLeZ3D0riy4L1D140Please try later56.4GE1D1I0LoW3On2Fyul45Getting low on fuel}&6.4go2D1SSLe1P4&Go to sleepH*6. Er1U2SSIKSS4A1d2Lin3WOn2F1D1e4HError six at line one-forty,6.4CO2r}Acu1LsnZ4,Congratulations"96.A1D1Ak3A1D1Ak3A1D1Ak39Attack! Attack! Attack!,36.i3AM2A3cA1D11b0HKS43I am a} chatterbox636.MD4MD4MD43Mayday! Mayday! Mayday!@?"6.iM2FeLI4V0re4DIPrESSt4?I'm feeling very depressed}J(6.HELo4SI1D1IZn4(Hello citizenT9!6.4DE0lM0e3Y2P1rOblUMSS49Tell me your problems^,6.4HAVUR2NiSS32D4,}Have a nice dayh"(>:A%,"AR@rI(A. Hello and welcome3(B. Merry ChristmasI(C. Happy Birthday|}L(D. Please do not touch+(E. Ouch!L(F. Prepare to meet your doom="(G. The answer is forty-two=(H. Once upon} a time...I(I. Please try later6(J. Getting low on fuelI(K. Go to sleep=&(L. Error six at line one-forty=(}M. Congratulations;"(N. Attack! Attack! Attack!;(O. I am a chatterboxD"(P. Mayday! Mayday! Mayday!D(Q. I'm f}eeling very depressedL(R. Hello citizen5(S. Tell me your problemsL(T. Have a nice day--(%--------------------}-----------------AdAU6. &6-F:Ad,&"AUApK-@@"?(% } K37 spaces"@c6. A"@!6. A"@6. A}"@X6. A"@B6. A"@V6. A&"@a6. A}0"@W6. A:"@6. AD"@6. AN"@6. A}X"6. Ab"@76. Al"@56. Av"@6. A}"@6. A"@G6. A"@@6. A"@b6. A}"@E6.-@@"(--@B:,-6-?:A6<@:7<,,,G6-F:A,Gcorrect allopho}ne code, translated from ASCII form,!A'A`,trap illegal codes4B@%A(4send code with strob}e high: F:AD,"@A@:wait for "ready" signalFB@#B@%A(Fpulse strobe line low, }then high> -@@P >short pause at end of speech8B@'B@A(8turn sound o}ff  A`66(>:A%,#Please ensure that the two joystick --(%leads are in their correct ports, and*>+(#tha}t the power supply is connected,>(then RUN again D:SPEECH4.BAS-(%leads are in their correct ports, and*>+(#thaIy 1 AZDCTESBLANK@@1d@SA6@Q  } d%&++Speech Synth: Allophone string editor "F:AD,"@" Ap;A,ZB@@V'}B@AU9B@@`KB@ZSet up ports(;@8,2;/6.% } ;37 spaces<=;@,;@,$6.D:=To hold Disk file nameF(>:A%,PA-Ap")}A6%- Ainsert TranslatorZJJ104,104,104,201,48,144,61,201,53,176,5,56,233,47,16,54,201,65,144,48dII201,91,176,}5,56,233,59,208,41,201,97,144,35,201,123,176,5,56,233,65nMM208,28,201,193,144,22,201,219,176,5,56,233,135,208,15,201,239,1}44,9,201xFF246,176,5,56,233,155,208,2,169,0,170,189,80,6,141,255,6,160,1,96;;255,0,1,2,3,4,26,63,8,33,7,40,36,27,12,10},42,45,16,56==24,9,0,15,55,14,15,35,46,0,25,43,59,28,50,21,19,0,61,57996,0,41,62,0,11,53,0,0,39,37,18,22,0,48,0,49,38},20,0550,0,52,0,34,51,0,0,0,0,0,44,23,0,0,60,0,54,30,0 32,0,5,0,58,0,0,47,0,29,31 A0 A@-@}@ A0?-@@?(%Π to replay :(Ԡ to change:(ҙ}Ԡ to save the string+-@@(+-@@--@B:,-6-?:A6<@:7<,,,G6-F:A},Gcorrect allophone code, translated from ASCII form,!A'A,trap illegal codes4B@%A(4}send code with strobe high: F:AD,"@A:wait for "ready" signal"LB@#B@%A(Lpu}lse strobe line low, then high again, 6:-@@P :short pause at end of speech@8B@'}B@A(8turn sound offJ F:B2y,"@A@THF:B2y,"@" A0, A@>AdAU}H A^ F:B2y,"@Aph A0rAdAU|((( SAVE string to assette or isk? F:}Ad,"AUA F:Ad,"@A0 F:Ad,"@XA.(>:@(,$AdAU}. A A6(>:A%,6(!Insert your blank cassette, press))(!RETURN and follow CSAVE procedure F:}Ad,@A`AdAUC:(>:A%,#-@@(# A.+(!String sav}ed to cassette as Line . A2 A 2( Name of file to hold the string?67B:,%@,.&} (>:A%,0#-@@(# A:+((String saved to  as line +DAdAUN-(}-("Line number for the string? (<100)XJ(>:A%,&-@@J( A$= >:@4,>:@4,b6((C}ONT!-@3AB@6&l%AB@"(>:A%,%$v$-@@((!($$=-@}@=(#Input the ASCII string to be spoken((then press Π$:(>:A%,:(%ŠŠ}ԠŠϠˠ--(%ӠŠΠҠԠӬ0-(%ԠŠҠ٠ӠĠ0 D:SP}EECH5.BASˠ--(%ӠŠΠҠԠӬ0-(%ԠŠҠ٠ӠĠ0 D:SP   Disco Lights: Test program KB@@V'B@AU9B@@`KB@}B@( @  D:DISCO1.BASB@@V'B@AU9B@@`KB@=DX00Diso Lights: Single-channel Strobe program KB@@V'B@AU9B}@@`KB@+B@@+SWITCH CHANNEL 1 ON'-@@ '"ON" TIME(/B@}/SWITCH ALL CHANNELS OFF2(-@@P ("OFF" TIME< @  D:DISCO2.BASTIME(/B@l CHA$$Disco lights: 4-channel Chaser KB@@V'B@AU9B}@@`KB@ #@p-@@("B@2'-@A 'SET SPEED}<  @ F 1,2,4,8 D:DISCO3.BAS-@@("B@2'-@A 'SET SPEED2  3vSPEEC__Disco Lights: Flashes lights in random combinations, wi}th equal intervals between changes KB@@V'B@AU9B@@`KB@F6-A}FControls the rate of change (333 is approx 1 second)%%6-P:H:,$@,%@(B@2-}  @0 D:DISC04.BAS3 is approx 1 second)%%6-P:H:,$@,%@(B@2-!#$BROCOADCDELAPAUSSPEE@ } ``Disco Lights: Flashes lights in random combinations, with random intervals }between changes KB@@V'B@AU9B@@`KB@(=%6-P:H:,$@,%@}=Select Random pattern236-P:H:,$A,3Select random delay<B@F-  @@} D:DISCO5.BASpattern236-P:H:,$A,3Select random delay<B@F-  @@&'BROCOADCDELAPAUSSPEEMA@} nnDisco Lights - Keyboard controlled sequencer. Press '*' to advan}ce, '+' to go back or ESC to start again +6-+Load the DATA into Page 6""6@@P@A6%}6-%@+!AU=( TOO MUCH DATA@( @ 26-&@<KB@@V'B@AU9B}@@`KB@F +@P6-Z6-F:A6%,dB@n;-@;(@}CONTROL NUMBER:  x;-@;(@SEQUENCE NUMBER:  3 "-@3(@} (LAST ONE)@  -@4(@ @12 SPACES F:Ad,"AUAP6F:Ad,"}@,6-%@$+ ,6 A<F:Ad,"@26-&@$+!,< A$F:Ad,"@($6}-AdAU @aaEach DATA item represents a particular combination of channels. Up to 255 may be} programmed!!0,1,5,3,12,7,2,14,4,15,0,-1 D:DISCO6.BASsents a particular combination of channels. Up to 255 may beA00PROGRAM 1: Ultrasonic Switch: Test program +@+-@ @+(@F:AD, }AF:AD,$@( @  D:REMOTE1.BASam +@+-@ @+(@F:AD, <  #(=COUNLIN::Ultrasonic Switch: selecting from a range of options 6-+}@D-@)-@@@(@OPTION D +AR@+Turn the cursor off(o)(!}Press the Transmit button to stepP("through the options. Release it too(activate the one you want.2= F:AD,"@}@P=Wait for ultrasonic signal<H-@ %@'(@ HTwo spaces:REM Erase old arrowF?6-%@}!@)6-@?Step to next optionP8-@ %@8(@>:@`,>:@`,Z--@AP} -Sets step speeddW F:AD,"@`WIf signal still present, do not activate this optionnG(>:A%},+(OPTION  ACTIVATEDGInsert your own code herex @P D:REMOTE2.BASctivate this optionnG(>:A%]Quizbox: Skeleton program M-@R")A6%- 7 @`MInse}rt machine codeO6-?:A6<AP,OStart m/c code routine. 2nd number sets time delay46-F:A,4Find which} player pressed first(-"#(RUN OUT OF TIME- @`2(PLAYER NUMBER <'('(Press any key to start t}imerFAdAUPJ F:Ad,"AU@JWait for any keyboard key to be pressedZ9(>:A%, @ }9Clear screen and start againdKK104,104,133,204,104,133,203,169,0,133,19,133,20,173,120,2,10,13,132,2nLL73,31,208,16,}165,19,197,204,144,239,165,20,197,203,144,233,162,0,240,9x11162,5,24,106,176,3,202,208,250,142,255,6,96D:QUIZBOX1.}BAS19,197,204,144,239,165,20,197,203,144,233,162,0,240,9x11162,5,24,106,176,3,202,208,250,142,255,6,96D:QUIZBOX1.TAP1P2P3P4P5P6 } 99Quizbox: User-friendly timer and priority indicator 06-A0Time limit (500 = Ten} seconds)RR;@ ,;@ ,;@ ,;@ ,;@ ,;@ ,;@ ,6.CAN'T IDENTIFY((>:A}%,6-@2 A046.< A046.F A046.P A0}46.Z A046.d` +@'0@9AR@`Set up display and cle}ar text cursornU-@R")A6%- 7 APUInsert machine code routinexKK104,104,133,204,104,}133,203,169,0,133,19,133,20,173,120,2,10,13,132,2LL73,31,208,16,165,19,197,204,144,239,165,20,197,203,144,233,162,0,240,9}11162,5,24,106,176,3,202,208,250,142,255,6,96P(>:A%,(9(! PThree initial sp}acesAdAUJ F:Ad,"AUApJWait for any keyboard key to be pressedN(>:A%,&(@}>:A%,NClear Graphics screen and text window<("( Ǯ<Fourteen initial spaces2 AP}2Execute the entire Quizbox routine APNext cycle,(,(Please type the name of player 6-%@}$96-?:A6<,9Start timing and scanning switches*6-F:A,*Result is stored here+"!6}. OUT OF TIME+ A0"@6. A0""@6. A0,"@6. A06}"@6. A0@"@6.JF!6-P:+@ &B:,,'@,FHorizontal offset to centralise A$T-@}(@^"Ah -A6@r#2@@# |%%2}$%%2AP@@-@A %%2}$D:QUIZBOX2.BAS2AP@@-@A %%2\ r TAP1P2P3P4P5P6 } Quizbox: Word-making game 06-A0Time limit (500 = Ten seconds)RR;}@ ,;@ ,;@ ,;@ ,;@ ,;@ ,;@ ,6.CAN'T IDENTIFY((>:A%,6-@}2 A@46.< A@46.F A@46.P A@46.Z} A@46.d` +@'0@9AR@`Set up display and clear text cursorn}U-@R")A6%- 7 APUInsert machine code routinexKK104,104,133,204,104,133,203,169,0,133},19,133,20,173,120,2,10,13,132,2LL73,31,208,16,165,19,197,204,144,239,165,20,197,203,144,233,162,0,240,911162,5,24,10}6,176,3,202,208,250,142,255,6,96P(>:A%,(9(! PThree initial spacesAd}AUJ F:Ad,"AUApJWait for any keyboard key to be pressedN(>:A%,&(@>:A%,NCl}ear Graphics screen and text window AP<("( Ǯ<Fourteen initial spaces2 A`2E}xecute the entire Quizbox routine APNext cycle,(,(Please type the name of player 6-%@}$96-?:A6<,9Start timing and scanning switches*6-F:A,*Result is stored here+"!6. }OUT OF TIME+ A@""@6. A@,"@6. A@6"@6. A@@"@}6. A@J"@6.TF!6-P:+@ &B:,,'@,FHorizontal offset to centralise A$^-@}(@h"Ar -A6@|#2@@# %%2}$%%2AP@@-@A %%2}$-@@E%6-P:H:,$@&,%@eEGenerate a random letter codeP-$@%@@}/(@>:,PPrint the corresponding letterL%2@@@@LShort beep as each letter is print}ed-@@@ %%2"@A@9-@AP 9Short }pause between letters $D:QUIZBOX3.BAS"@A@9-@AP 9Short 9 TAP1P2P3P4P5 }  Quizbox: Word-finding game 06-A0Time limit (500 = Ten seconds)GG;@ ,};@ ,;@ ,;@ ,;@ ,;@ ,(>:A%,6-@(Get contestantS' names:2 A@}< A@F A@P A@Z A@d` +@'0@9AR@}`Set up display and clear text cursornU-@R")A6%- 7 APUInsert machine code routin}exKK104,104,133,204,104,133,203,169,0,133,19,133,20,173,120,2,10,13,132,2LL73,31,208,16,165,19,197,204,144,239,165,20,}197,203,144,233,162,0,240,911162,5,24,106,176,3,202,208,250,142,255,6,96P(>:A%,(9(! }PThree initial spacesAdAUJ F:Ad,"AUApJWait for any keyboard key to be presse }dN(>:A%,&(@>:A%,NClear Graphics screen and text window AP<("( Ǯ }<Fourteen initial spaces2 A`2Execute the entire Quizbox routine APNext cycle,(,(Pleas }e type the name of player 6-%@$96-?:A6<,9Start timing and scanning switches*6-F:A,* }Result is stored here+"!6. OUT OF TIME+ A@""@6. A@,"@6. A@}6"@6. A@@"@6. A@J"@6.TF!6-P:+@ &B:,,'@,FHori}zontal offset to centralise A$^-@(@h"Ar -A6@|#2}@@# %%2$%%2AP@@-@A} %%2$Z-6-P:H:,$@0,$@%APZSelecta random line number fr}om 550 to 840E%6-P:H:,$@&,%@eEGenerate a random letter code(@>:A%, H!6-P:+@ }&B:,,'@,HHorizontal position to centralise A$L-(@.-@@L(@beginni}ng with )-@A )Short delay%%2@P@@J-@@  =2}JShort beep?-@ @%(@>:,?Print the random letter$&6. a boy's na}me$06. a girl's name$:6. an animal$D6.a sport or pastime$N!6.a musical instrument!$X6.} a lake or sea$b6.a job or trade$l6.a type of food$v6.a river$6.a flower$6. a }vegetable$6.a hobby$6. a pop group$6.a t.v. programme$6. a country$6.a colour}$6.a tree$6. a proverb$6.a famous author$6.a fish$6. a song title$ 6.}a cartoon character $ 6.a film or t.v. star $  6.an item of clothing $!6.an historical figure!$ }6.a famous building$*6.found on a beach$46.found in an office$>6.found in a garage$H6.}found in a garden$D:QUIZBOX4.BAS a beach$46.found in an office$>6.found in a garage$H6.+05 ;Quizbox: Source code for USR routine in all Quizbox programs10 HOLD=$6FF20 LIMIT=$CB30 RTCLOK=$1340 STICK0=$27850 ST}RIG0=$28460 *=$60070 PLA Clear 'No. of parameters' byte80 PLA90 STA LIMIT+1 Time limit, high byte010}0 PLA0110 STA LIMIT Time limit, low byte0120 LDA #0 Start timer from 00130 STA RTCLOK0140 STA RTCLOK+1 }0150 LOOP0160 LDA STICK0 Read Stick in port 10170 ASL A Shift all 4 bits one place left0180 ORA STRIG0 !} Put trigger value at bit 00190 EOR #31 Invert all five bits0200 BNE STORE Branch if any button pressed0210 "} LDA RTCLOK Check elapsed time0220 CMP LIMIT+1 against time limit0230 BCC LOOP Branch if limit not reached0#}240 LDA RTCLOK+10250 CMP LIMIT0260 BCC LOOP0270 LDX #0 No key pressed in time = 00280 BEQ DONE0290 STORE03$}00 LDX #50310 CLC0320 NEXT0330 ROR A Read each bit in turn0340 BCS DONE Branch on first '1'0350 DEX%}0360 BNE NEXT0370 DONE0380 STX HOLD X holds position of first '1'0390 RTS Return to Basic'0350 DEXq2 2 1 5 0 6 90 2 0 120 273317DoDDS: SOFTWARE FOR ATARI USER GADGETS SERIESSETUP.BAS: Setting joystick '}ports 1 and 2 for output.MAINS1.BAS: Mains controller - single-channel on/off flash routine.MAINS2.BAS: Mains control(}ler - simple time delay program.MAINS3.BAS: Mains controller - using an external resistive sensor (eg CDS Cell).KEYPAD1)}.BAS: Numeric keypad - Version runs as part of a Basic program.KEYPAD2.BAS: Numeric keypad: Creates an AUTORUN.SYS file.*}KEYPAD1.SRC: Source code for KEYPAD1.BAS.KEYPAD2.SRC: Source code for KEYPAD2.BAS.HEXPAD.BAS: 16-key version of num+}eric keypad (creates AUTORUN.SYS file).HEXPAD.SRC: Source code for HEXPAD.BAS.MUSIC1.BAS: Musical keyboard - setting ,}up.MUSIC2.BAS: Musical keyboard - Vertical blank routine to read keys.MUSIC2.SRC: Source code for MUSIC2.BAS.MUSIC3-}.BAS: Musical keyboard - allows editing and replay at variable tempo.LOWVOLT1.BAS: 4-channel low-voltage controller - "ch.}aser" effect.LOWVOLT2.BAS: 4-channel low-voltage controller - motor speed/light dimming control, using variable mark/space /}ratio.ROTARY1.BAS: 16-way electronic switch - test program.ROTARY2.BAS: 16-way switch - Vertical Blank routine to read 0}analogue sensors.ROTARY2.SRC: Source code for ROTARY2.BAS.SOUNDSW1.BAS: Sound-activated switch - test program.SOUNDSW21}.BAS: Sound-activated switch - short 'monostable' action.SOUNDSW3.BAS: Sound-activated switch - "Talking head".JOYPRNT1.B2}AS: Epson printer driver, using joystick ports 1 and 2 (Disk version.)JOYPRNT2.BAS: Epson printer driver (Cassette version)3}.JOYPRNT1.SRC: Source code for JOYPRNT1.BAS.JOYPRNT2.SRC: Source code for JOYPRNT2.BAS.ANSTICK1.BAS: Analogue joystick 4}- test programANSTICK2.BAS: Analogue joystick - simple drawing routineANSTICK3.BAS: Analogue joystick - Vertical Blank ro5}utine converts the joystick output into Graphics 7 plotting co-ordinates.ANSTICK4.BAS: Analogue joystick - Sketchpad with e6}xtra keyboard controls.ANSTICK3.SRC: Source code for ANSTICK3.BAS.ANSTICK4.SRC: Source code for ANSTICK4.BAS.SPEECH1.BA7}S: Speech Synthesiser - test program.SPEECH2.BAS: Speech Synth - Using DATA statements to sya "Computer".SPEECH3.BAS: 8}Speech Synth - Simple ASCII-to-Allophone translator.SPEECH4.BAS: Speech Synth - Demonstration of selected phrases.SPEECH9}5.BAS: Speech Synth - Allophone string editor allows easy experimentation to produce desired speech output.DISCO1.BAS 4:}-channel Disco lights - test program.DISCO2.BAS: Disco lights - Single-channel strobe.DISCO3.BAS: Disco lights - 4-ch;}annel chaser.DISCO4.BAS: Disco lights - Random pattern flashing; equal intervals between changes.DISCO5.BAS: Disco li<}ghts - Random pattern flashing; random intervals between changes.DISCO6.BAS: Disco-lights - keyboard controlled pattern s=}equencer.REMOTE1.BAS: Ultrasonic Switch: Test program.REMOTE2.BAS: Ultrasonic Switch - Single-stepping through a menu.>}QUIZBOX1.BAS: Quiz timer and priority indicator - skeleton program.QUIZBOX2.BAS: Quiz timer and priority indicator - allow?}s use of competitors' names.QUIZBOX3.BAS: Quiz game - make a word from 3 random letters.QUIZBOX4.BAS: Quiz game - Word-fi@}nding. Eg "Name of an animal, beginning with...." (random letter).QUIZBOX.SRC: Source code for Vertical Blank routine usedA} in all QUIZBOX programs.EASYCLK1.PAL: Simple software timer, suitable for short, uncritical delays. Designed for PAL 50Hz B}interrupt, so needs modifying for NSTC systems.EASYCLK2.PAL: Accurate real-time clock in 5 lines of Basic. Designed for PALC} system, but easily modified to suit NSTC.EASYCLK3.BAS: Accurate count-down timer (up to 24 hours), in 5 lines of Basic. DeD}signed for PAL, but easily modified to suit NSTC. OR ATARI USER GADGETS SERIESSETUP.BAS: Setting joystick @