10 *A,10000 20 end 10000 "*B 10010 " 10020 "SETLFS=$FFBA 10030 "SETNAM=$FFBD 10040 "SAVE =$FFD8 10050 "GETIN =$FFE4 10060 "CHROUT=$FFD2 10070 "PPLAY =$E31B 10080 "PRECO =$E319 10090 "RAMON =$FF3F 10100 "ROMON =$FF3E 10110 "LOCK =$7FC 10120 "TIM2 =$FF02 10130 "TINT =$FF09 10140 "SYNC =$16 10150 "PIO =1 10160 " 10170 "FFIRST=$60 ;2B 10180 "FLAST =FFIRST+2;2B 10190 "DATA =FLAST+2 10200 "CNT =DATA+1 10210 "CHKSUM=CNT+1 10220 "TEMP =CHKSUM+1 10230 "TOP =TEMP+1 10240 "T0 =TOP+1 10250 "T1 =T0+1 10251 "T2=T1+1 10252 "T3=T2+1 10260 " 10261 "K=$4700-$220 10262 "WOBBLE=$4000 10270 "ORG $4700 10280 " 10290 "READ: PHP 10300 " SEI 10301 " LDA #$B8 10302 " STA $25C 10310 " LDA $FF19 10320 " PHA 10330 " 10340 " JSR PPLAY 10350 "LODHIG: LDX #1 10360 "RETRY: LDA #0 10370 " STA $FF19 10380 " STA CHKSUM 10390 " STA PIO 10400 " LDY #255 10410 "SYNCT: 10420 " JSR READB-K 10430 " CMP #SYNC 10440 " BEQ GOTSYN 10450 " 10460 " STX DATA 10470 " JSR SKIPB-K 10480 " BCC SYNCT 10490 "GOTSYN: 10500 " JSR READB-K 10510 " CMP #SYNC 10520 " BEQ GOTSYN 10530 " 10540 " CMP FNLEN 10550 " BNE RETRY 10560 " 10570 "NAMCHK: INY 10580 " CPY FNLEN 10590 " BCS NMEND 10600 " JSR READC-K 10610 " CMP FNAM,Y 10620 " BEQ NAMCHK 10630 " BNE RETRY 10640 "NMEND: 10660 " LDY #3 10670 "GADDR: JSR READC-K 10680 " STA FFIRST,Y 10690 " DEY 10700 " BPL GADDR 10710 " 10720 " JSR READC-K 10730 " CMP CHKSUM 10740 " BNE ERROR 10750 " 10760 " LDY FFIRST 10770 " LDA #0 10780 " STA FFIRST 10790 " STA TOP 10800 " 10810 "RBLOCK: LDA FFIRST+1 10820 " CMP FLAST +1 10830 " PHP 10840 " BCC NOTYT 10850 " LDA FLAST 10860 " BEQ RDONE 10870 " STA TOP 10880 "NOTYT: 10890 " JSR READC-K 10900 " STA (FFIRST),Y 10910 " INY 10920 " CPY TOP 10930 " BNE NOTYT 10940 " 10950 " JSR READC-K 10960 " CMP CHKSUM 10970 " BNE ERROR 10980 " 10990 " INC FFIRST+1 11000 " PLP 11010 " BNE RBLOCK 11020 " PHA;DUMMY 11030 " 11040 "RDONE: LDX #0 11050 " BYT $2C 11060 "ERROR: LDX #$80 11070 " PLA;DUMMY OR STATUS 11080 " LDA #$88 11090 " STA PIO 11100 " STA LOCK 11110 " 11120 " PLA 11130 " STA $FF19 11140 " PLP 11150 " JMP (BEGIN) 11160 " 11170 "READC: LDA DATA 11180 " EOR CHKSUM 11190 " STA CHKSUM 11200 "READB: LDA #$FE 11210 " STA DATA 11220 "SKIPB: STY TEMP 11230 "LODLOW: LDY #$38 11240 "READ0: INC $FF19 11250 " LDA #$10 11260 "READ1: BIT PIO 11270 " BNE READ1 11280 " STY TIM2 11290 " STX TIM2+1 11300 "READ2: BIT PIO 11310 " BEQ READ2 11320 " LDA TIM2+1 11330 " ASL A 11340 " ROL DATA 11350 " BCS READ0 11360 " LDY TEMP 11370 " LDA DATA 11380 " RTS 11390 "LAST: 11400 " 11410 "BEGIN =$2F0 11420 "FNLEN =$2F2 11430 "FNAM =$2F3 11440 " 11450 " 11460 "JUMP =$304 11470 " 11480 " ORG WOBBLE 11490 " 11491 " LDA #$F1 11492 " STA $FF15 11493 " LDA #$EE 11494 " STA $FF19 11495 " JSR EDCLR 11500 "TURBO: LDX #0 11510 "TUR1: LDA MESG,X 11520 " BEQ TUR2 11530 " JSR $FFD2 11540 " INX 11550 " BNE TUR1 11560 "TUR2: JSR $FFE4 11570 " CMP #32 11580 " BCC TUR2 11590 " CMP #96 11600 " BCS TUR2 11610 " JSR $FFD2 11620 " CMP #'1 11630 " BEQ GENHED 11640 " CMP #'2 11650 " BEQ GENTAP 11660 " CMP #'M 11670 " BEQ MONITO 11671 " CMP #'E 11672 " BEQ EDIT 11673 " CMP #'3 11674 " BEQ LOADDK 11675 " CMP #'4 11677 " BEQ CONST 11680 " LDA #157 11690 " JSR $FFD2 11700 " JMP TUR2 11701 " 11702 "EDIT: JSR EDITOR 11703 " JMP TURBO 11710 " 11711 "LOADDK:JSR DISKLD 11712 " JMP TURBO 11713 "CONST: JSR CONSTT 11714 " JMP TURBO 11720 "MONITO: JSR $8117 11730 " BRK 11740 " 11750 "GENHED: JSR WMESG1 11760 " JSR WMESG2 11770 " JSR WMESG5 11780 " JSR REPLY 11790 " BCS GENHED 11800 " SEI 11810 " LDX #0 11820 "GENMVE: LDA READ,X 11830 " STA $220,X 11840 " INX 11850 " CPX #LAST-READ 11860 " BCC GENMVE 11870 " LDA #<$220 11880 " STA $302 11890 " LDA #>$220 11900 " STA $303 11910 " JSR HEADER 11920 " CLI 11930 " JMP TURBO 11940 " 11950 "GENTAP: JSR WMESG2 11960 " JSR WMESG3 11970 " JSR WMESG4 11980 " JSR REPLY 11990 " BCS GENTAP 11995 " JSR EDDWN 12000 " JSR WRITE 12010 " JMP TURBO 12020 " 12030 "GETHEX: LDA #0 12040 " STA T0 12050 " STA T1 12060 "GETHEZ: JSR GETIN 12070 " CMP #13 12080 " BEQ GETEX 12090 " CMP #'0 12100 " BCC GETHEZ 12110 " CMP #'F'+1 12120 " BCS GETHEZ 12130 " CMP #'9'+1 12140 " BCC GOTDIG 12150 " CMP #'A' 12160 " BCC GETHEZ 12170 " 12180 "GOTDIG: JSR CHROUT 12190 " PHA 12200 " LDX #3 12210 "DIGS: ASL T0 12220 " ROL T1 12230 " DEX 12240 " BPL DIGS 12250 " PLA 12260 " 12270 " SEC 12280 " SBC #48 12290 " CMP #10 12300 " BCC DIGSHF 12310 " SBC #7 12320 "DIGSHF: ORA T0 12330 " STA T0 12340 " JMP GETHEZ 12350 "GETEX: RTS 12360 " 12370 "GETNAM: LDA #0 12380 " STA T0 12390 "GETNIM: JSR GETIN 12400 " CMP #13 12410 " BEQ GETNEX 12420 " CMP #32 12430 " BCC GETNIM 12440 " CMP #96 12450 " BCS GETNIM 12460 " 12470 " JSR CHROUT 12480 " LDX T0 12490 " STA NAME,X 12500 " INC T0 12501 " LDA T0 12502 " CMP #16 12503 " BCC GETNIM 12520 "GETNEX: RTS 12530 " 12540 "REPLY: LDX #0 12550 "REP1: LDA CORREC,X 12560 " BEQ REP2 12570 " JSR CHROUT 12580 " INX 12590 " BNE REP1 12600 "REP2: JSR GETIN 12610 " CMP #'Y 12620 " BEQ YES 12630 " CMP #'N 12640 " BNE REP2 12650 " SEC 12660 " RTS 12670 "YES: CLC 12680 " RTS 12690 " 12700 "WMESG2: LDX #0 12710 "WM2: LDA MESG2,X 12720 " BEQ WM21 12730 " JSR $FFD2 12740 " INX 12750 " BNE WM2 12760 "WM21: JSR GETNAM 12770 " LDX T0 12780 " STX FNLEN 12790 " BEQ WM22 12800 "WM23: LDA NAME-1,X 12810 " STA FNAM-1,X 12820 " DEX 12830 " BNE WM23 12840 "WM22: RTS 12850 " 12860 "WMESG3: LDX #0 12870 "WM3: LDA MESG3,X 12880 " BEQ WM31 12890 " JSR $FFD2 12900 " INX 12910 " BNE WM3 12920 "WM31: JSR GETHEX 12930 " LDA T0 12940 " STA FFIRST 12950 " LDA T1 12960 " STA FFIRST+1 12970 " RTS 12980 " 12990 "WMESG4: LDX #0 13000 "WM4: LDA MESG4,X 13010 " BEQ WM41 13020 " JSR $FFD2 13030 " INX 13040 " BNE WM4 13050 "WM41: JSR GETHEX 13060 " LDA T0 13070 " STA FLAST 13080 " LDA T1 13090 " STA FLAST+1 13100 " RTS 13110 " 13120 "WMESG5: LDX #0 13130 "WM5: LDA MESG5,X 13140 " BEQ WM51 13150 " JSR $FFD2 13160 " INX 13170 " BNE WM5 13180 "WM51: JSR GETHEX 13190 " LDA T0 13200 " STA BEGIN 13210 " LDA T1 13220 " STA BEGIN+1 13230 " RTS 13240 " 13250 "WMESG1: LDX #0 13260 "WM1: LDA MESG1,X 13270 " BEQ WM11 13280 " JSR $FFD2 13290 " INX 13300 " BNE WM1 13310 "WM11: JSR GETNAM 13320 " LDX T0 13330 " STX HEADL 13340 " BEQ WM12 13350 "WM13: LDA NAME-1,X 13360 " STA HEADN-1,X 13370 " DEX 13380 " BNE WM13 13390 "WM12: RTS 13400 " 13410 "HEADER: LDA #1 13420 " TAX 13430 " TAY 13440 " JSR SETLFS 13450 " LDA HEADL 13460 " LDX #HEADN 13480 " JSR SETNAM 13490 " LDA #<$220 13500 " STA T0 13510 " LDA #>$220 13520 " STA T1 13530 " LDA #T0 13540 " LDX #<$304 13550 " LDY #>$304 13560 " JMP SAVE 13570 " 13580 "HEADL: BYT 0 13590 "HEADN: RES 16 13600 " 13610 "WRITE: PHP 13620 " SEI 13630 " LDA $FF19 13640 " PHA 13650 " 13660 " JSR PRECO 13670 " STA RAMON 13680 " LDA #2 13690 " STA PIO 13700 " 13710 " LDA #0 13720 " STA CHKSUM 13730 " STA $FF19 13740 " LDA #4 13750 " JSR GAIT 13760 " 13770 " LDX #16 13780 "WSYNC: LDA #SYNC 13790 " JSR WRITEB 13800 " DEX 13810 " BNE WSYNC 13820 " 13830 " LDA FNLEN 13840 " JSR WRITEB 13850 " LDA FNLEN 13860 " BEQ NONAME 13870 " 13880 " LDY #0 13890 "WNAME: LDA FNAM,Y 13900 " JSR WRITEB 13910 " INY 13920 " CPY FNLEN 13930 " BCC WNAME 13940 "NONAME: 13960 " LDX #3 13970 "WADDR: LDA FFIRST,X 13980 " JSR WRITEB 13990 " DEX 14000 " BPL WADDR 14010 " 14020 " LDA CHKSUM 14030 " JSR WRITEB 14040 " 14050 " LDY FFIRST 14060 " LDA #0 14070 " STA FFIRST 14080 " STA TOP 14090 " 14100 "BLOCK: JSR DELL 14110 " LDA FFIRST+1 14120 " CMP FLAST +1 14130 " PHP 14140 " BCC NOTYET 14150 " LDA FLAST 14160 " BEQ WDONE 14170 " STA TOP 14180 "NOTYET: 14190 " LDA (FFIRST),Y 14200 " JSR WRITEB 14210 " INY 14220 " CPY TOP 14230 " BNE NOTYET 14240 " 14250 " LDA CHKSUM 14260 " JSR WRITEB 14270 " 14280 " INC FFIRST+1 14290 " PLP 14300 " BNE BLOCK 14310 " PHA 14320 " 14330 "WDONE: PLA 14340 " LDA #$88 14350 " STA PIO 14360 " STA LOCK 14370 " STA ROMON 14380 " 14390 " PLA 14400 " STA $FF19 14410 " PLP 14420 " RTS 14430 " 14440 "WRITEB: STA DATA 14450 " EOR CHKSUM 14460 " STA CHKSUM 14470 " TYA 14480 " PHA 14490 " LDY #8 14500 "WRT1: INC $FF19 14510 " LDA #0 14520 " STA PIO 14530 " JSR DELL 14540 " ASL DATA 14550 " BCC ZERO 14560 " JSR DELL 14570 "ZERO: LDA #2 14580 " STA PIO 14590 " JSR DELL 14600 " DEY 14610 " BNE WRT1 14620 " PLA 14630 " TAY 14640 " RTS 14650 " 14660 "GAIT: STA CNT 14670 " LDX #0 14680 " LDY #0 14690 "GAIT1: DEY 14700 " BNE GAIT1 14710 " DEX 14720 " BNE GAIT1 14730 " DEC CNT 14740 " BNE GAIT1 14750 " RTS 14760 " 14790 "DELL:SAVLOW:LDA #$60 14800 " STA TIM2 14810 "SAVHIG: LDA #0 14820 " STA TIM2+1 14830 " LDA #16 14840 " STA TINT 14850 "DEL11: BIT TINT 14860 " BEQ DEL11 14870 " STA TINT 14880 " RTS 14890 " 14900 "MESG: BYT 19,19,147,9,14,31,8,13,13 14910 " 14920 "BYT ' TURBO.TAPE.MENU.....',13,13 14930 "BYT ' 1) GENERATE HEADER',13 14940 "BYT ' 2) TURBO SAVE RAM',13 14941 "BYT ' 3) DISK LOAD',13 14942 "BYT ' 4) ALTER CONSTANTS',13 14945 "BYT ' E) EDIT SCREEN',13 14950 "BYT ' M) EXIT TO MONITOR',13,13 14960 "BYT ' ENTER OPTION : ',0 14970 " 14980 "MESG1: BYT 147,13,13 14990 " 15000 "BYT ' ENTER HEADER FILE NAME:',13,32,0 15010 " 15020 "MESG2: BYT 147,13,13 15030 " 15040 "BYT ' ENTER TURBO FILE NAME:',13,32,0 15050 " 15060 "MESG3: BYT 13,13 15070 " 15080 "BYT ' ENTER START ADDRESS:',13,32,0 15090 " 15100 "MESG4: BYT 13,13 15110 " 15120 "BYT ' ENTER END ADDRESS:',13,32,0 15130 " 15140 "MESG5: BYT 13,13 15150 " 15160 "BYT ' ENTER RUN ADDRESS:',13,32,0 15170 "CORREC:BYT 13,13,' CORRECT? Y/N ',0 15180 "NAME: RES 16 15190 " 15270 " 20000 "DISKLD: 20010 " JSR $FBD8 20020 " BYT 147,13,' ENTER DISK FILE NAME',13,13,' ',0 20030 " JSR GETNAM 20040 " LDA T0 20060 " BNE DISCON 20070 " RTS 20080 "DISCON: LDX #NAME 20100 " JSR SETNAM 20110 " LDA #8 20120 " TAX 20130 " LDY #255 20140 " JSR SETLFS 20150 " LDA #0 20160 " JMP $FFD5 20170 " 30000 "OUTHEX:TXA 30010 " LSRA 30020 " LSRA 30030 " LSRA 30040 " LSRA 30050 " JSR OUTNIB 30060 " TXA 30070 " AND #15 30080 " JSR OUTNIB 30090 " TYA 30100 " LSRA 30110 " LSRA 30120 " LSRA 30130 " LSRA 30140 " JSR OUTNIB 30150 " TYA 30160 " AND #15 30170 "OUTNIB: 30180 " ORA #$30 30190 " CMP #$3A 30200 " BCC OKNIB 30210 " ADC #6 30220 "OKNIB: JSR $FFD2 30230 " RTS 30240 " 40000 "CONSTT: JSR $FBD8 40010 " BYT147,13,'CURRENT SAVE CONSTANT=',0 40020 " LDX SAVHIG+1 40030 " LDY SAVLOW+1 40040 " JSR OUTHEX 40050 " JSR $FBD8 40060 " BYT 13,13,'CURRENT LOAD CONSTANT=',0 40070 " LDX LODHIG+1 40080 " LDY LODLOW+1 40090 " JSR OUTHEX 40100 " JSR $FBD8 40110 " BYT 13,13,13,'ENTER SAVE>',0 40120 " JSR GETHEX 40130 " LDA T0 40140 " ORA T1 40150 " BEQ TRY2 40160 " LDY T1 40170 " STY SAVHIG+1 40180 " LDX T0 40190 " STX SAVLOW+1 40200 "TRY2: JSR $FBD8 40210 "BYT 13,13,'ENTER LOAD>',0 40220 " JSR GETHEX 40230 " LDA T0 40240 " ORA T1 40250 " BEQ TRY3 40260 " LDX T1 40270 " LDY T0 40280 " STX LODHIG+1 40290 " STY LODLOW+1 40300 "TRY3:RTS 40310 " 60010 "EDITOR: JSR WEDMES 60020 "EDWA: JSR GETIN 60030 " CMP #13 60040 " BNE EDWA 60050 " 60060 " LDA #9 60070 " JSR CHROUT 60080 " LDA #19 60090 " JSR CHROUT 60100 " JSR EDDWN 60110 " JSR $D965 60120 " JSR EDUP 60130 " RTS 60140 " 60150 "EDUP: LDA #0 60160 " STA T0 60170 " STA T2 60180 " LDA #8 60190 " STA T1 60200 " LDA #$48 60210 " STA T3 60220 " LDY #0 60230 " LDX #8 60240 " 60250 "EDU1: LDA (T0),Y 60260 " STA (T2),Y 60270 " INY 60280 " BNE EDU1 60290 " INC T1 60300 " INC T3 60310 " DEX 60320 " BNE EDU1 60330 " RTS 60340 " 60350 "EDDWN: LDA #0 60360 " STA T0 60370 " STA T2 60380 " LDA #$08 60390 " STA T1 60400 " LDA #$48 60410 " STA T3 60420 " LDX #8 60430 " LDY #0 60440 " 60450 "EDD1: LDA (T2),Y 60460 " STA (T0),Y 60470 " INY 60480 " BNE EDD1 60490 " INC T1 60500 " INC T3 60510 " DEX 60520 " BNE EDD1 60530 " RTS 60540 " 60550 "EDCLR: LDA #0 60560 " STA T0 60570 " LDA #$48 60580 " STA T1 60590 " LDY #0 60600 " LDX #8 60610 " LDA #32 60620 " 60630 "EDC1: STA (T0),Y 60640 " INY 60650 " BNE EDC1 60660 " INC T1 60670 " DEX 60680 " BNE EDC1 60690 " RTS 60700 " 60710 " 60720 "WEDMES: LDA #EDMES 60750 " STA WED1+2 60760 " 60770 "WED1: LDA $FFFF 60780 " BEQ WED2 60790 " JSR $FFD2 60800 " INC WED1+1 60810 " BNE WED1 60820 " INC WED1+2 60830 " BNE WED1 60840 "WED2: RTS 60850 " 60860 " 60870 "EDMES: BYT 147,13,13 60880 " 60890 "BYT 'USE CURSOR KEYS TO MOVE AROUND SCREEN.',13 60900 "BYT 'PRESSING A KEY STORES ITS CODE AT THAT',13 60910 "BYT 'POSITION. CHANGE COLOURS THE NORMAL',13 60920 "BYT 'MANNER. RETURN WILL EXIT EDIT MODE.',13,13 60930 "BYT 'WHEN TURBO SAVING, THE EDIT SCREEN IS',13 60940 "BYT 'DOWNLOADED. TO SAVE USE START ADDRESS',13 60950 "BYT 'OF 800. NB. KEEP REC/PLAY PRESSED AFTER',13 60960 "BYT 'GENERATING THE HEADER FILE.',13,13 60970 "BYT 'PRESS RETURN TO CONTINUE.',0 60980 "*T