1000 GOTO1055 1005 OPEN15,8,15,"S0:KERNAL++.SRC":CLOSE15:SAVE"0:KERNAL++.SRC",8:END 1010 ; 1015 ; -------------------------------- 1020 ; "[203][197][210][206][193][204]++ [214]1.0 ([195]) 14 [202][213][206][197] 87 1025 ; "(null)ILLIAM LENOLEMAN 1431 (null)ACETTI (null)D 1030 ; " AKA [199]REEN [195]OVE [211]PGS 1035 ; "(null)ASTER PEEKLASTER ASCLORIDA 32043 1040 ; -------------------------------- 1045 ; 1050 ; THESE 2 LINES COPY THE ROMS INTO RAM 1055 : FOR I=57344 TO 65535:POKEI,PEEK(I):NEXT 1060 : FOR I=40960 TO 49151:POKEI,PEEK(I):NEXT 1065 SYS32768 1070 .OPT OO 1075 .PAGE 65 1080 ; ABOVE IS FOR ABACUS ASSEMBLER. FOR PAL, USE SYS 700, DELETE .PAGE LINE 1085 ; 1090 ; *** KERNAL EQUATES *** 1095 ; 1100 SECOND = $FF93 1105 TKSA = $FF96 1110 ACPTR = $FFA5 1115 CIOUT = $FFA8 1120 UNTALK = $FFAB 1125 UNLSN = $FFAE 1130 LISTEN = $FFB1 1135 TALK = $FFB4 1140 READST = $FFB7 1145 OPEN = $F3D5 1150 CLOSE = $F642 1155 CHROUT = $FFD2 1160 LOAD = $F49E 1165 STOP = $FFE1 1170 CLALL = $FFE7 1175 ; 1180 ; *** OTHER EQUATES *** 1185 ; 1190 BASINIT = $E3BF; INITIALIZE BASIC 1195 BASMSG = $E422; POWER-UP MESSAGE 1200 VECP3 = $E453; RESTORE PG 3 VECTORS 1205 SETPNTS = $E56C; SET CHAROUT PNTRS 1210 CHARDONE = $E6A8; EXIT 4 SCREEN CHAROUT 1215 CHKCODES = $E72A; CHAROUT (AFTER PATCH) 1220 CLRLINE = $E9FF; CLEAR SCREENLINE 1225 UPORDOWN = $EC44; CHK FOR CASE CHANGE 1230 SAVE = $E159 1235 BORDER = $D020 1240 BACKRND = $D021 1245 CIAPRA = $DC00 1250 CIAPRB = $DC01 1255 OUTNUM = $BDCD; PRINT INTEGER 1260 STROUT = $AB1E; OUTPUTS A STRING 1265 NEWSTT = $A7AE; SET UP STATEMENT 1270 RUNC = $A68E; SET UP FOR RUN 1275 CLEAR = $A659; CLEAR BASIC 1280 CRUNCH = $A57C; TOKENIZE LINE 1285 LINK = $A533; RELINK BASIC 1290 CRVEC = $0304; CRUNCH VECTOR 1295 SPCKEY = $028D; CTRL,SHIFT,OR C= 1300 REPEAT = $028A; KEYBRD REPEAT FLAG 1305 INBUF = $0200; INPUT BUFFER 1310 ; 1315 ; *** ZERO PAGE EQUATES *** 1320 ; 1325 CPNT = $F3; PNTR TO COLOR MEM 1330 LLYNX = $D9; LINE LINK TABLE 1335 INSERT = $D8; >0 = INSERT MODE 1340 ROW = $D6; CURSOR ROW (0-24) 1345 LMAX = $D5; MAX CHARS IN LINE 1350 QUOTE = $D4; >0 = QUOTE MODE 1355 COLUMN = $D3; CURSOR COLUMN 1360 RPNT = $D1; PNTR TO VIDEO MATRIX 1365 KEYCNT = $C6; KEYBRD BUFFER COUNT 1370 WEJDEV = $BE; WEDGE DEVICE # 1375 FNAME = $BB 1380 DEVICE = $BA; CURRENT DEVICE 1385 SND = $B9; SECONDARY ADDR 1390 LENGTH = $B7; LENGTH OF FILENAME 1395 EAL = $AE; END OF LOAD 1400 KFLAG = $9D; KERNAL MESSAGE FLAG 1405 ST = $90 1410 TXTPTR = $7A 1415 SOV = $2D; START OF VARIABLES 1420 SOB = $2B; START OF BASIC 1425 MISC = $22 1430 FLAG = $02; FLAG FOR AUTOBOOT 1435 ; 1440 CTRLRET = 21; CTRL-RETURN 1445 CTRLHM = 22; CTRL-HOME 1450 CTRLINS = 23; CTRL-INS/DEL 1455 CTRLVCR = 25; CTRL-VERT CURSOR 1460 CTRLHCR = 26; CTRL-HORI CURSOR 1465 ; --------------------------------------- 1470 ; 1475 ; -- PATCHES DEFAULT DEVICE # -- 1480 ; 1485 *= $E1DA 1490 .BYTE 8; LOAD"FILE" = LOAD"FILE",8 1495 *= $E228 1500 .BYTE 4; OPEN4 = OPEN4,4,7 1505 LDY #7 1510 ; 1515 ; -- PATCHES VECTOR TABLE -- 1520 ; 1525 *= $E44B 1530 .WORD WEDGE 1535 ; 1540 ; -- MODIFY POWER UP MESSAGE -- 1545 ; 1550 *= $E488 1555 .ASC "[203]ERNAL++ [214]1.0 " 1560 ; 1565 ; -- TEXT FOR LOAD -- 1570 ; 1575 *= $E4B7 1580 LOADTXT .ASC "LOAD" 1585 .BYTE 34 1590 .ASC "0:*" 1595 .BYTE 34 1600 .ASC ",8,1" 1605 ; 1610 ; -- PATCH TO FOR STOP KEYS -- 1615 ; 1620 *= $E5EA 1625 JMP ONEKEYS 1630 NOP 1635 LDX #5 1640 ; 1645 ; -- PATCH TO PRINT ROUTINE -- 1650 ; 1655 *= $E725 1660 JMP CHKQUOTE 1665 NOP 1670 NOP 1675 *= $E7D1 1680 JMP NEWCODES 1685 ; 1690 *= $E962 1695 JMP WAIT 1700 ; 1705 ; -- PATCH TO CTRL TABLE -- 1710 ; 1715 *= $EC42 1720 .BYTE $84 1725 *= $EC78 1730 .BYTE CTRLINS,CTRLRET,CTRLHCR 1735 *= $EC7F 1740 .BYTE CTRLVCR 1745 *= $ECAB 1750 .BYTE CTRLHM 1755 *= $ECB7 1760 .BYTE $85 1765 ; 1770 ; -- PATCH SHIFT-RUN/STOP -- 1775 ; 1780 *= $ECE7 1785 .BYTE 13 1790 .ASC "RUN" 1795 .BYTE 13 1800 ; 1805 ; -- PATCH OUT CASSETTE -- 1810 ; 1815 *= $F2CE 1820 JMP $F271 1825 *= $F38B 1830 JMP $F713 1835 *= $F539 1840 JMP $F713 1845 *= $F65A 1850 NOP 1855 NOP 1860 ; 1865 ; -- DO STOP KEYS -- 1870 ; 1875 *= $F65F 1880 ONEKEYS CMP #$83; SHIFTED 1885 BNE OK1 1890 JMP $E5EE 1895 OK1 CMP #$84; C= KEY 1900 BNE OK2 1905 LDX #13 1910 BNE STICKIT; ALWAYS 1915 OK2 CMP #$85; CTRL KEY 1920 BNE OK3 1925 LDX #9 1930 STICKIT SEI 1935 STX KEYCNT 1940 OKLOOP LDA LOADTXT-1,X 1945 STA $0276,X 1950 DEX 1955 BNE OKLOOP 1960 JMP $E5CD 1965 OK3 JMP $E5FE 1970 ; 1975 ; -- ACTIVATES WEDGE -- 1980 ; 1985 *= $F72C 1990 WEDGEON JSR VECP3 1995 LDA #$08 2000 STA WEJDEV 2005 RTS 2010 ; 2015 ; 2020 ; -- WEDGE PROPER -- 2025 ; 2030 WEDGE LDX TXTPTR; IF NOT INPUT BUFFER 2035 BNE DOREG; THEN CRUNCH 2040 CMP #"@" 2045 BEQ DOAT 2050 CMP #">" 2055 BEQ DOAT 2060 CMP #"_" 2065 BEQ DOSAVE 2070 WDGE CMP #"%"; ENTRY FROM AUTOBOOT 2075 BEQ DOML 2080 CMP #"^" 2085 BEQ DOLOAD 2090 CMP #"/" 2095 BEQ DOLOAD 2100 CMP #"=" 2105 BEQ DOLOAD 2110 CMP #"!" 2115 BEQ JDOBAS 2120 CMP #"#" 2125 BEQ SEQ 2130 DOREG JMP CRUNCH; NORMAL CRUNCHING 2135 ; 2140 JDOBAS JMP DOBAS; SPRINGBOARD 2145 ; 2150 ; -- SAVE ROUTINE _ -- 2155 ; 2160 DOSAVE JSR SETUP; SET UP FILE PARAMS 2165 JSR SAVE; SAVE PROGRAM 2170 FRMSEQ JSR PRNTRET; PRINT RETURN 2175 JMP DISPERR; DISPLAY ERROR CHAN. 2180 ; 2185 ; -- SET UP FOR LOAD -- 2190 ; 2195 DOML LDA #1 2200 .BYTE $2C 2205 DOLOAD LDA #0 2210 JMP LOADIT 2215 ; 2220 ; -- READ SEQ FILE -- 2225 ; 2230 SEQ LDA INBUF+1 2235 BEQ DONE; EXIT IF JUST # 2240 JSR SETUP; SET UP FILE PARAMETERS 2245 LDY LENGTH; LENGTH OF FILENAME 2250 INY 2255 LDA #"," 2260 STA INBUF,Y 2265 INY; ADD TWO 2270 LDA #"S" 2275 STA INBUF,Y; APPEND ',S' 2280 STY LENGTH; SAVE NEW LENGTH 2285 JSR YOOHOO; TELL DRIVE TO TALK 2290 LDA #25; CTRL-RETURN 2295 JSR CHROUT; CLEAR TO BOTTOM 2300 SEQL LDA ST 2305 BNE SQOUT; EXIT IF ST SET 2310 JSR STOP 2315 BEQ SQOUT; ALSO CHECK STOP KEY 2320 JSR ACPTR; GET A BYTE 2325 JSR CHROUT; AND PRINT IT 2330 JMP SEQL; LOOP BACK 2335 ; 2340 SQOUT JSR CLOSE; CLOSE FILE 2345 JMP FRMSEQ; EXIT 2350 ; 2355 ; -- PARSE @ COMMANDS -- 2360 ; 2365 DOAT JSR SETUP; SET UP FILE PARAMETERS 2370 LDA INBUF+1 2375 BEQ JDISPERR; JUST @ 2380 CMP #"#" 2385 BEQ CHGDEV 2390 CMP #"Q" 2395 BEQ QUIT 2400 CMP #"$" 2405 BEQ DIR 2410 CMP #"\" 2415 BEQ JWPROT 2420 ; 2425 ; -- SEND STRING TO ERROR CHANNEL -- 2430 ; 2435 JSR HELLO; MAKE DRIVE LISTEN 2440 LDY #0 2445 DALOOP LDA INBUF+1,Y; SEND STRING 2450 JSR CIOUT; TO DRIVE 2455 INY 2460 CPY LENGTH 2465 BNE DALOOP 2470 JSR UNLSN 2475 DONE JMP BYE 2480 JDISPERR JMP DISPERR; READ ERROR CHAN. 2485 ; 2490 JWPROT BEQ WPROT; SPRINGBOARD 2495 ; 2500 ; -- DISABLE WEDGE -- 2505 ; 2510 QUIT LDA #CRUNCH 2525 STA CRVEC+1 2530 ; 2535 ; -- CHANGE WEDGE DEVICE -- 2540 ; 2545 CHGDEV LDA INBUF+2 2550 AND #$0F 2555 STA WEJDEV 2560 ; 2565 ; -- COMMON EXIT POINT -- 2570 ; 2575 BYE JSR $A67A; PART OF CLEAR 2580 JMP $A47B; MAIN BASIC LOOP 2585 ; 2590 ; -- LIST DIRECTORY TO SCREEN -- 2595 ; 2600 DIR JSR YOOHOO; MAKE DRIVE TALK 2605 LDA #3; LOAD ADDR,LINK,BLOCKS 2610 LINEIN STA $9C 2615 SUK JSR ACPTR; GET BYTE FROM DRIVE 2620 STA $9E; STORE 2625 JSR ACPTR; GET ANOTHER 2630 STA $9F; STORE IT TOO 2635 LDX ST 2640 BNE DDONE; CHECK ST 2645 DEC $9C; LOOP TO READ IN 2650 BNE SUK; $9C PAIRS 2655 LDX $9E; PRINT DECIMAL 2660 LDY $9F; NUMBER, I.E. 2665 JSR OUTNUM; NUMBER OF BLKS 2670 LDA #" " 2675 JSR CHROUT; PRINT SPACE 2680 DLOOP JSR ACPTR; GET A BYTE 2685 BEQ ENDLINE; LOOP TILL ZERO (EOL) 2690 JSR CHROUT 2695 JMP DLOOP 2700 ENDLINE JSR PRNTRET 2705 JSR STOP; CHECK STOP KEY 2710 BEQ DDONE 2715 LDA #2 2720 BNE LINEIN; LINK,BLOCKS 2725 DDONE JSR CLOSE 2730 JMP BYE 2735 ; 2740 PRNTRET LDA #13 2745 JMP CHROUT; PRINT RETURN 2750 ; 2755 ; -- WRITE (UN)PROTECT DISK -- 2760 ; 2765 ; THIS ROUTINE SENDS TO COMMANDS TO THE 2770 ; DRIVE. THE FIRST WRITES SOME CODE AND 2775 ; THE SECOND ONE EXECUTES THAT CODE. 2780 ; 2785 WPROT JSR HELLO 2790 LDY #0 2795 WLOOP LDA PROTSTR,Y 2800 JSR CIOUT 2805 INY 2810 CPY #31 2815 BNE WLOOP 2820 JSR UNLSN 2825 JSR HELLO 2830 LDY #0 2835 WLOOP2 LDA EXESTR,Y 2840 JSR CIOUT 2845 INY 2850 CPY #5 2855 BNE WLOOP2 2860 JSR UNLSN 2865 JMP DISPERR 2870 ; 2875 ; THESE TWO COMMANDS ARE SENT TO THE 2880 ; DRIVE. THE FIRST IS A MEMORY WRITE 2885 ; AND THE SECOND IS A MEMORY EXECUTE 2890 ; 2895 PROTSTR .ASC "M-W"; M-W 00 06 25 2900 .WORD $0600 2905 .BYTE 25 2910 JSR $D042; LOAD BAM 2915 LDA $0702; GET DOS VERSION 2920 EOR #4; A TO E/E TO A 2925 STA $0702; STORE IT BACK 2930 STA $07A6; DIRECTORY (2A/E) 2935 LDA #$41; MAKE SURE DRIVE 2940 STA $0101; WILL WRITE 2945 JSR $EF07; BAM TO DISK 2950 JMP $D042; REREAD BAM AND EXIT 2955 ; 2960 EXESTR .ASC "M-E"; M-E 00 06 2965 .WORD $0600 2970 ; 2975 ; -- LOAD ROUTINE % / ^ = -- 2980 ; 2985 LOADIT STA SND 2990 JSR SETUP; SET UP FILE PARAMETERS 2995 LDX SOB 3000 LDY SOB+1; GET START OF BASIC 3005 LDA INBUF; IF VERIFY THEN 3010 CMP #"="; ACCUM > 0 3015 BEQ VER 3020 LDA #0 3025 VER JSR LOAD; LOAD PROGRAM 3030 BCS LBAD; BRANCH ON ERROR 3035 LDA ST 3040 AND #$10 3045 BNE LBAD2; BRANCH ON ST 3050 LDA INBUF 3055 CMP #"%" 3060 BEQ LDONE; IF ML LOAD THEN DONE 3065 LDA EAL 3070 STA SOV 3075 LDA EAL+1 3080 STA SOV+1; SET END OF LOAD PNTRS 3085 JSR CLEAR; RESET REMAINING PNTRS 3090 JSR LINK; RE-LINK PROGRAM 3095 JSR RUNC; PARTIAL CLEAR 3100 LDA INBUF 3105 CMP #"^" 3110 BNE LDONE; IF NOT ^ THEN DONE 3115 LDA #0 3120 STA KFLAG; SUPPRESS KERNAL MESS. 3125 STA INBUF 3130 JMP NEWSTT; EXECUTE NEXT STATEMENT 3135 ; 3140 LBAD TAX 3145 BNE LFINI 3150 LDX #$1E 3155 .BYTE $2C 3160 LBAD2 LDX #$1C 3165 .BYTE $2C 3170 LDONE LDX #$80; NO ERROR 3175 LDA #$FF 3180 STA $3A; SET DIRECT MODE 3185 LFINI JMP ($0300) 3190 ; 3195 ; -- PARSE COMMAND STRING -- 3200 ; 3205 ; THIS ROUTINE SET LENGTH AND ADDR 3210 ; PARAMETERS OF FILENAME IN BUFFER. 3215 ; % "FILENAME" WILL BECOME 3220 ; %FILENAMELNAME 3225 ; THIS ^^^^^ WILL BE IGNORED 3230 ; 3235 PARSE LDY #$02 3240 STY FNAME+1 3245 DEY 3250 STY FNAME; FILENAME AT $0201 3255 DEY; NOW ZERO 3260 PLOOP1 LDA INBUF+1,Y 3265 BEQ PDONE 3270 CMP #$22 3275 BEQ QUOT 3280 INY 3285 BPL PLOOP1 3290 QUOT LDX #0 3295 PMOVE LDA INBUF+2,Y; SHIFT STRING TO 3300 STA INBUF+1,X; START OF BUFFER. 3305 BEQ X2Y; NO TRAILING QUOTE 3310 CMP #$22 3315 BEQ X2Y 3320 INY 3325 INX 3330 CPX #$25 3335 BNE PMOVE 3340 X2Y TXA 3345 TAY 3350 PDONE STY LENGTH 3355 RTS 3360 ; 3365 ; -- DISPLAY ERROR CHANNEL -- 3370 ; 3375 DISPERR JSR CLRST 3380 LDA DEVICE 3385 JSR TALK 3390 LDA #%01101111; $60+0F 3395 JSR TKSA 3400 ERRLOOP JSR ACPTR 3405 JSR CHROUT 3410 CMP #13 3415 BEQ ERRDONE 3420 LDA ST 3425 BEQ ERRLOOP 3430 ERRDONE JSR UNTALK 3435 JBYE JMP BYE 3440 ; 3445 ; -- MAKE DISK LISTEN -- 3450 ; 3455 HELLO LDA DEVICE 3460 JSR LISTEN 3465 LDA #%01101111; $60+0F 3470 JMP SECOND 3475 ; 3480 ; -- MAKE DRIVE TALK -- 3485 ; 3490 YOOHOO LDA #%01100000; $60+0 3495 STA SND; 2NDARY ADDR 3500 JSR OPEN; OPEN CHANNEL 3505 LDA DEVICE 3510 JSR TALK; MAKE DRIVE TALK 3515 LDA SND 3520 JMP TKSA; 2NDARY ADDR 3525 ; 3530 ; -- SETUP FOR DRIVE ROUTINES -- 3535 ; 3540 SETUP JSR PARSE; PARSE FILENAME 3545 LDA WEJDEV 3550 STA DEVICE; SET DRIVE # 3555 CLRST LDA #0 3560 STA ST; CLEAR STATUS 3565 RTS 3570 ; 3575 ; -- PARSE ! ROUTINES -- 3580 ; 3585 DOBAS LDA INBUF+1 3590 BEQ JBYE; JUST ! 3595 CMP #"D" 3600 BEQ DEFAULT 3605 CMP #"*" 3610 BEQ UNNEW 3615 CMP #"0" 3620 BCC JBYE 3625 CMP #"<" 3630 BCS JBYE 3635 STA BORDER 3640 LDY INBUF+2 3645 BEQ SCOLOR 3650 CLC 3655 TYA 3660 ADC #10 3665 STA BORDER 3670 SCOLOR STA BACKRND 3675 JMP BYE 3680 ; 3685 DEFAULT JSR COLOR 3690 JMP BYE 3695 ; 3700 ; -- UNNEW BASIC -- 3705 ; 3710 UNNEW LDA #1 3715 TAY 3720 STA (SOB),Y; SET FIRST LINK 3725 JSR LINK; RE-LINK PROGRAM 3730 LDA MISC 3735 STA SOV; LINK PROVIDES THE 3740 LDA MISC+1; END OF PROGRAM. 3745 STA SOV+1; JUST MOVE IT. 3750 JSR CLEAR 3755 JMP BYE 3760 ; 3765 ; -- SET DEFAULT SCREEN COLORS -- 3770 ; -- MODIFY TO SUIT YOUR TASTE -- 3775 ; 3780 COLOR LDA #$80 3785 STA REPEAT; MAKE ALL KEYS REPEAT 3790 LDA #0; BACKROUND 3795 STA BORDER 3800 NOP; YOU CAN INSERT A 3805 NOP; A LDA #XX HERE. 3810 STA BACKRND 3815 LDA #153; CHAR COLOR 3820 JSR CHROUT 3825 LDA #14; LOWERCASE 3830 JMP CHROUT 3835 ; 3840 ; -- CHECK FOR AUTOBOOT -- 3845 ; 3850 AUTOBOOT JSR WEDGEON 3855 JSR BASINIT; INITIALIZE BASIC 3860 JSR COLOR 3865 JSR BASMSG; POWER UP MESSAGE 3870 ; 3875 LDX #251 3880 TXS; CLEAR STACK 3885 LDA #1 3890 STA FLAG; INIT LOAD TYPE FLAG 3895 LDA SPCKEY 3900 CMP #1 3905 BEQ AUTO1; IF SHIFT KEY 3910 CMP #4 3915 BEQ AUTO2; IF CTRL KEY 3920 BNE FINI; ALWAYS IF NO MATCH 3925 AUTO1 LSR FLAG; FLAG NOW ZERO 3930 AUTO2 JSR CLALL 3935 LDY #$FF 3940 BOOTL INY; TRANFER "0:?*" 3945 LDA STAR,Y; TO INPUT BUFFER. 3950 STA INBUF+1,Y 3955 BNE BOOTL 3960 JSR PARSE; PARSE BUFFER 3965 LDA FLAG 3970 BNE MLLOAD 3975 LDA #"^" 3980 .BYTE $2C 3985 MLLOAD LDA #"%" 3990 STA INBUF; USE THE WEDGE 3995 JMP WDGE; TO LOAD PROGRAM. 4000 FINI JMP $E386; TO BASIC 4005 STAR .ASC "0:?*" 4010 .BYTE 0 4015 ; 4020 ; -- POWER UP DEFAULT COLORS -- 4025 ; 4030 SETCLR JSR COLOR 4035 JMP ($A002) 4040 ; 4045 ; -- STOP SCROLL IF SHIFT -- 4050 ; 4055 WAIT STA $AC 4060 SEI 4065 W1 LDA #$FD 4070 STA CIAPRA 4075 LDA CIAPRB 4080 CMP #%01111111 4085 BEQ W1; LOOP IF SHIFT 4090 CLI 4095 RTS 4100 ; 4105 ; -- QUOTE TOGGLE -- 4110 ; 4115 CHKQUOTE BPL CHKQ; PART OF REG KERNAL 4120 JMP $E7D4; KEY > 128 4125 CHKQ CMP #CTRLINS; "CTRL-INS PRESSED? 4130 BEQ Q[164]G; YEP 4135 JMP CHKCODES; NOPE 4140 Q[164]G LDA INSERT; "INSERT MODE? 4145 BEQ TRYQ; NOPE 4150 QOFF LDA #0 4155 STA INSERT; CLEAR INSERT 4160 STA QUOTE; CLEAR QUOTE 4165 BEQ QDONE; ALWAYS 4170 TRYQ LDA QUOTE; "QUOTE MODE? 4175 BNE QOFF; YEP, CLEAR IT 4180 INC QUOTE; NOPE, SET IT 4185 QD[145]E JMP CHARD[145]E 4190 ; 4195 ; [171][171] PARSE [162] CTRL CODES [171][171] 4200 ; 4205 [162]CODES CMP #CTRLRET 4210 BEQ [156]2EOL 4215 CMP #CTRLHM 4220 BEQ BOTHOME 4225 CMP #CTRLVCR 4230 BEQ [156]2BOT 4235 CMP #CTRLHCR 4240 BEQ [156]2[164]P 4245 JMP UP[176]DOWN; CHECK [129] CASE CHANGE 4250 ; 4255 ; [171][171] CLEAR [164] [128] OF LINE [171][171] 4260 ; 4265 [156]2EOL LDA #$20; PUT A SPACE 4270 STA (RPNT),Y; IN VIDEO MATRIX 4275 LDA BACK[187]; PUT BACKROUND COL[176] 4280 STA (CPNT),Y; IN COL[176] MEM[176]Y 4285 INY 4290 CPY LMAX; CHECK [129] EOL 4295 BCC [156]2EOL 4300 BEQ [156]2EOL 4305 BCS JCHRD[145]E 4310 ; 4315 ; [171][171] CURS[176] [164] BOT[164]M [171][171] 4320 ; 4325 BOTHOME LDY #0 4330 LDX #24 4335 JSR $E50C; JUMP [181]O CLEAR SCREEN 4340 JCHRD[145]E JMP CHARD[145]E 4345 ; 4350 ; [171][171] CLEAR [164] BOT[164]M OF SCREEN [171][171] 4355 ; 4360 [156]2BOT LDX #$19 4365 C2B1 DEX; FROM THE BOT[164]M UP 4370 CPX ROW 4375 BEQ C2B2 4380 LDA LLYNX,X; CLEAR LINE LINKS 4385 [176]A #$80 4390 STA LLYNX,X 4395 JSR [156]LINE; CLEAR LINE 4400 BMI C2B1; ALWAYS 4405 C2B2 JSR $E9F0; RESET PO[181]ERS 4410 JSR $EA24 4415 LDY COLUMN; CLEAR LINE THE 4420 JMP [156]2EOL; CURS[176]S [145]. 4425 ; 4430 ; [171][171] CLEAR [164] [164]P OF SCREEN [171][171] 4435 ; 4440 [156]2[164]P LDX #$FF 4445 C2T1 INX; FROM THE [164]P DOWN 4450 LDA LLYNX,X; CLEAR LINE LINKS 4455 [176]A #$80 4460 STA LLYNX,X 4465 JSR [156]LINE; CLEAR LINE 4470 CPX ROW 4475 BNE C2T1 4480 BEQ JCHRD[145]E; ALWAYS 4485 ; 4490 ; [171][171] VARIOUS PATCHES [171][171] 4495 ; 4500 [172][178] $FCFF 4505 JMP AU[164]BOOT 4510 [172][178] $FE6F 4515 JMP SET[156] 4520 [172][178] $FF80 4525 .BYTE $10; VERSI[145] BYTE (1.0) 4530 ; 4535 ; [171][171] [158]65526 [164] REACTIVATE [171][171] 4540 ; 4545 [172][178] $FFF6; LAST JUMP TABLE ENTRY 4550 JMP WEDGE[145]; IS N[176]MALLY UNUSED. 4555 ; 4560 ; 4565 .[128]