10 ; --- ILPER4B --- 20 ; periph HPIL 30 ; video+disque 40 ; avec scope et LON 50 ; LON off/on=DDL0/1 60 ; scope=DDL2 70 ; VIDEO compatible HP 80 ; ESC j & k (jeu caract.) 90 ; DISK compatible HP9114 100 ; mod. 05/04/86 105 ; 30/08/86 : AAU -> adr. 1,2 110 ; 120 *=$0200 130 BUF0=$AE00 140 BUF1=$AF00 150 IL=$C200 160 NBEH=10 170 NBEL=0 2560 secteurs 180 ; 190 SCP=$04 200 FCR=$05 210 DB=$08 220 CB=$09 230 VCMD=$0A 240 STAT=$10 250 OC=$11 260 PE=$12 270 PE0=$14 280 DL=$16 290 DT=$17 300 FPT=$18 310 FLMTR=$19 320 CTER=$1A 330 LADS=$1B 340 TADS=$1C 350 LASTB=$1D 360 SP=$1E 370 FLPWR=$1F 380 FLESC=$20 390 FLCRON=$21 400 CURS=$22 410 CARCAC=$23 420 CSR=$24 430 PPERC=$26 440 CTER0=$27 450 CTER1=$28 460 FLLF=$29 470 MALT=$2A 480 LINE=$40 490 ; 500 DEBLIN=$0B 510 ENDLIN=$39 520 CLS=$FCD5 530 ; 540 ; init video 545 NOP 0 NOP 0 NOP 550 CLD 560 LDX #$FF 570 TXS 580 JSR CLRDSP 590 LDA #$7F 600 STA MALT 610 ; 620 LDA #0 630 STA SCP 640 STA FCR 650 INITIL LDA IL 660 LDX #0 670 DEX 680 BNE *-1 690 INX 700 STX IL 710 DEX 720 NOP 0 NOP 0 NOP 730 STX IL+1 740 STX IL+3 750 DEX 760 STX IL+4 765 STX IL+5 ; flag AAD valide 770 LDA #$10 780 STA IL ; LA=1 790 LDA #0 800 LDX #$10 810 INIT0 STA $10,X 820 DEX 830 BPL INIT0 840 JSR HOMED 850 LDA #23 860 STA STAT 870 ; --- IL --- 880 DMASK=0 890 RMASK=$A0 900 PRINC LDA #$16 910 BIT IL+1 920 BEQ *+5 930 JSR FRAME 940 DEC CTER0 950 BNE PRINC 960 DEC CTER1 970 BNE PRINC 980 PRINC1 BIT FLCRON 990 BPL PRINC 1000 BVS PRINC2 1010 LDA CARCAC 1020 LDX #$C0 1030 BNE PRINC3 1040 PRINC2 LDA CURS 1050 LDX #$80 1060 PRINC3 STX FLCRON 1070 LDY #0 1080 STA (CSR),Y 1090 BEQ PRINC 1100 FRAME LDA IL+1 1110 TAX 1120 AND #$10 1130 BNE IFCR 1140 TXA 1150 AND #2 1160 BNE FRNS 1170 TXA 1180 AND #$E0 1190 CMP #$80 1200 BCC DOE 1210 BEQ CMD 1220 JMP RDY 1230 DOE STA CB 1240 LDA IL+2 1250 STA DB 1260 BIT SCP 1270 BVC *+5 1280 JSR VIDEO 1290 BIT SCP 1300 BPL *+5 1310 JSR VIEWD 1320 LDA #5 1330 BIT LADS ; video lst? 1340 BEQ DOE1 1350 LDA DB 1360 BIT FCR 1370 BPL DOE0 1380 CMP #13 1390 BNE DOE0 1400 JSR VIDEO 1410 LDA #10 1420 DOE0 JSR VIDEO 1430 DOE1 LDA #2 1440 BIT LADS ; disque ? 1450 BEQ DOE2 1460 LDA DB 1470 JSR INDATA 1480 DOE2 LDA DB 1490 STA IL+2 1500 RTS 1510 IFCR LDA #0 1520 STA LADS 1530 STA TADS 1540 STA FPT 1550 BIT SCP 1560 BPL *+5 1570 JSR VIEWI 1580 LDA #$16 1590 STA IL 1600 LDX #$FF 1610 TXS 1620 JMP PRINC 1630 FRNS BIT IL+2 1640 JSR ETE 1650 RTS 1660 CMD LDA IL+2 1670 PHA 1680 BIT SCP 1690 BPL *+5 1700 JSR VIEWC 1710 PLA 1720 TAX 1730 AND #$1F 1740 STA DB 1750 TXA 1760 LSR A 1770 LSR A 1780 LSR A 1790 LSR A 1800 AND #$0E 1810 TAX 1820 LDA TABIL,X 1830 STA VCMD 1840 LDA TABIL+1,X 1850 STA VCMD+1 1860 JSR INDCMD 1870 LDA IL 1880 ORA #4 1890 STA IL 1900 RTS 1910 INDCMD JMP (VCMD) 1920 TABIL .WORD CMD0,LAD,TAD,INOP 1930 .WORD CMD4,DDL,DDT,INOP 1940 CMD0 LDA DB 1950 SDC CMP #4 1960 BNE DCL 1970 LDA #1 1980 BIT LADS 1990 BEQ SDC1 2000 JSR CLRDSP 2010 SDC1 LDA #2 2020 BIT LADS 2030 BEQ SDC2 2040 JSR CLRDRV 2050 SDC2 RTS 2060 DCL CMP #20 2070 BNE INOP 2080 JSR CLRDSP 2090 JSR CLRDRV 2100 INOP RTS 2110 LAD LDX DB 2120 CPX #31 ; UNL? 2130 BNE LAD0 2140 LDA #0 2150 STA LADS 2160 RTS 2170 LAD0 LDA LADS 2180 CPX SCP 2190 BNE LAD4 2200 ORA #4 2210 BNE LAD2 2220 LAD4 CPX IL+4 2230 BNE LAD1 2240 ORA #1 2250 BNE LAD2 2260 LAD1 DEX 2270 CPX IL+4 2280 BNE LAD3 2290 ORA #2 2300 LAD2 STA LADS 2310 EOR #$FF 2320 AND TADS 2330 STA TADS 2340 LAD3 RTS 2350 TAD LDX DB 2360 CPX SCP 2370 BEQ TAD3 2380 CPX IL+4 2390 BEQ TAD0 2400 DEX 2410 CPX IL+4 2420 BEQ TAD1 2430 LDA #0 2440 STA TADS 2450 RTS 2460 TAD0 LDA #1 2470 BNE TAD2 2480 TAD1 LDA #2 2490 TAD2 STA TADS 2500 EOR #$FF 2510 AND LADS 2520 STA LADS 2530 RTS 2540 TAD3 LDA #0 2550 STA TADS 2560 LDA LADS 2570 AND #$FC 2580 STA LADS 2590 RTS 2600 CMD4 LDA DB 2610 CMP #26 2620 BNE CMD40 2630 AAU LDA #1 2640 STA IL+4 2645 LDA #$FF 0 STA IL+5 2650 CMD40 RTS 2660 DDL LDA LADS 2670 AND #1 2680 BEQ DDLD 2690 LDA DB 2700 BNE DDLV1 2710 BEQ DDLVX 2720 DDLV1 CMP #1 2730 BNE DDLV2 2740 LDA #$40 2750 BNE DDLVX 2760 DDLV2 CMP #2 2770 BNE DDLD 2780 LDA #$80 2790 DDLVX STA SCP 2800 DDLD LDA LADS 2810 AND #2 2820 BEQ DDLX 2830 LDA DB 2840 STA DL 2850 DDL1 CMP #1 2860 BEQ CLRPWR 2870 DDL2 CMP #2 2880 BNE DDL4 2890 LDA #0 2900 STA OC 2910 CLRPWR LDA #0 2920 STA FLPWR 2930 RTS 2940 DDL4 CMP #4 2950 BEQ CLRPWR 2960 DDL5 CMP #5 2970 BNE DDL6 2980 JMP FORMAT 2990 DDL6 CMP #6 3000 BNE DDL7 3010 LDA #$80 3020 STA FLPWR 3030 JMP RREC 3040 DDL7 CMP #7 3050 BNE DDL8 3060 CLRDRV LDA #0 3070 STA FPT 3080 STA PE 3090 STA PE+1 3100 JMP HOMED 3110 DDL8 CMP #8 3120 BNE DDL9 3130 JSR WREC 3140 BIT FLPWR 3150 BMI DDL8A 3160 INC PE 3170 BNE *+4 3180 INC PE+1 3190 DDL8A RTS 3200 DDL9 CMP #9 3210 BNE DDL10 3220 DDL9A LDX #0 3230 STX OC 3240 DDL9B LDA BUF0,X 3250 STA BUF1,X 3260 INX 3270 BNE DDL9B 3280 RTS 3290 DDL10 CMP #10 3300 BNE DDLX 3310 EXCH LDX #0 3320 STX OC 3330 EXCH0 LDA BUF0,X 3340 LDY BUF1,X 3350 STA BUF1,X 3360 TYA 3370 STA BUF0,X 3380 INX 3390 BNE EXCH0 3400 DDLX RTS 3410 DDT LDA TADS 3420 AND #2 3430 BEQ DDTX 3440 LDA DB 3450 STA DT 3460 DDT0 CMP #0 3470 BEQ CLRPWR 3480 DDT2 CMP #2 3490 BNE DDT4 3500 JSR RREC 3510 LDA #0 3520 STA OC 3530 STA FLPWR 3540 INC PE 3550 BNE *+4 3560 INC PE+1 3570 RTS 3580 DDT4 CMP #4 3590 BEQ EXCH 3600 DDTX RTS 3610 ; 3620 RDY LDA IL+2 3630 PHA 3640 BIT SCP 3650 BPL *+5 3660 JSR VIEWR 3670 PLA 3680 STA DB 3690 BPL SOT 3700 CMP #$9E 3710 BCS FRDY 3720 AAD BIT IL+5 3730 BPL FRDY 3740 AND #$1F 3750 STA IL+4 3755 LDA #0 0 STA IL+5 3760 INC DB 3770 INC DB 3780 FRDY LDA DB 3790 STA IL+2 3800 RTS 3810 SOT LDA TADS 3820 BEQ FRDY 3830 LDA DB 3840 CMP #66 3850 BNE SDA 3860 JSR NRD 3870 DEBUT0 RTS 3880 SDA CMP #96 3890 BNE SST 3900 LDA TADS 3910 AND #2 3920 BEQ FRDY 3930 JSR ISEND 3940 JSR OUTDTA 3950 RTS 3960 SST CMP #97 3970 BNE SAI 3980 LDA TADS 3990 CMP #2 4000 BNE FRDY 4010 LDA STAT 4020 PHA 4030 AND #$E0 4040 STA STAT 4050 PLA 4060 JMP SENDA 4070 SAI CMP #99 4080 BNE SDI 4090 LDX TADS 4100 LDA #48 ; video 4110 CPX #2 4120 BNE *+4 4130 LDA #16 ; disque 4140 SENDA TAX 4150 JSR ISEND 4160 STX IL+2 4170 STX LASTB 4180 SETO LDA #RMASK 4190 STA IL+1 4200 LDA #64 4210 JSR SEND 4220 JMP UNTLK 4230 SDI CMP #98 4240 BNE FRDY 4250 JSR ISEND 4260 LDX #$FF 4270 SDI1 INX 4280 LDA DID,X 4290 BEQ SETO 4300 JSR SEND 4310 BCC SDI1 4320 RTS 4330 ISEND LDA IL 4340 AND #$08 4350 ORA #$20 4360 STA IL 4370 LDA #DMASK 4380 STA IL+1 4390 RTS 4400 SEND PHA 4410 LDA IL+1 4420 STA CB 4430 AND #$10 4440 BNE SIFCR 4450 LDA CB 4460 AND #4 4470 BNE SFRAV 4480 LDA CB 4490 AND #2 4500 BNE SFRNS 4510 LDA CB 4520 AND #1 4530 BEQ SEND+1 4540 PLA 4550 STA IL+2 4560 STA LASTB 4570 CLC 4580 RTS 4590 SIFCR JMP IFCR 4600 SFRAV PLA 4610 LDX IL+2 4620 LDA CB 4630 AND #$E0 4640 CMP #$80 4650 BNE SRDY 4660 PLA 4670 PLA 4680 JSR UNTLK 4690 JMP CMD 4700 SRDY TXA 4710 CMP #66 4720 BNE ETE 4730 NRD STA IL+2 4740 LDA IL+1 4750 AND #$17 4760 BEQ *-5 4770 LDA IL+1 4780 AND #$80 4790 BNE ETE 4800 LDA IL+2 4810 CMP LASTB 4820 BNE ETE 4830 ETO LDA #64 4840 BNE EOT 4850 SFRNS PLA 4860 ETE LDA #65 4870 EOT LDX #RMASK 4880 STX IL+1 4890 STA IL+2 4900 UNTLK LDA IL 4910 AND #$08 4920 ORA #$10 4930 STA IL 4940 SEC 4950 RTS 4960 DID .BYTE 'ILPER4B',13,10,0 4970 INDATA LDX DL 4980 BNE DL1 4990 DL0 LDY OC 5000 STA BUF0,Y 5010 INC OC 5020 BEQ DL0A 5030 LDA CB 5040 AND #$40 5050 BNE DL0B 5060 RTS 5070 DL0A JSR WREC 5080 INC PE 5090 BNE *+4 5100 INC PE+1 5110 BIT FLPWR 5120 BPL DL0C 5130 JMP RREC 5140 DL0B JSR WREC 5150 BIT FLPWR 5160 BMI DL0C 5170 INC PE 5180 BNE *+4 5190 INC PE+1 5200 DL0C RTS 5210 DL1 DEX 5220 BNE DL2 5230 LDY OC 5240 STA BUF1,Y 5250 INC OC 5260 RTS 5270 DL2 DEX 5280 BEQ DL0 5290 DL3 DEX 5300 BNE DL4 5310 STA OC 5320 RTS 5330 DL4 DEX 5340 BNE DL5 5350 BIT FPT 5360 BMI DL4A 5370 STA PE0+1 5380 DEC FPT 5390 RTS 5400 DL4A STA PE0 5410 SEC 5420 SBC #NBEL 5430 LDA PE0+1 5440 SBC #NBEH 5450 BCS DL4B 5460 LDA PE0+1 5470 STA PE+1 5480 LDA PE0 5490 STA PE 5500 LDA #0 5510 BEQ *+4 5520 DL4B LDA #28 5530 STA STAT 5540 LDA #0 5550 STA FPT 5560 RTS 5570 DL5 DEX 5580 BNE DL6 5590 RTS 5600 DL6 DEX 5610 BEQ DL0 5620 DLX RTS 5630 OUTDTA LDX DT 5640 BNE DT1 5650 DT0 LDA #0 5660 STA IL+1 5670 DT0A LDY OC 5680 LDA BUF0,Y 5690 JSR SEND 5700 BCS DT0C 5710 INC OC 5720 BNE DT0A 5730 DT0B JSR RREC 5740 INC PE 5750 BNE *+4 5760 INC PE+1 5770 BNE DT0A 5780 DT0C RTS 5790 DT1 DEX 5800 BNE DT2 5810 LDA #0 5820 STA IL+1 5830 DT1A LDY OC 5840 LDA BUF1,Y 5850 JSR SEND 5860 BCS DT1B 5870 INC OC 5880 BNE DT1A 5890 BEQ DTFIN 5900 DT1B RTS 5910 DT2 DEX 5920 BEQ DT0 5930 DT3 DEX 5940 BNE DT4 5950 LDA #0 5960 STA IL+1 5970 LDA PE+1 5980 JSR SEND 5990 BCS DT3A 6000 LDA PE 6010 JSR SEND 6020 BCS DT3A 6030 LDA OC 6040 JSR SEND 6050 BCS DT3A 6060 DTFIN LDA #$A0 6070 STA IL+1 6080 LDA #64 6090 JSR SEND 6100 JSR UNTLK 6110 DT3A RTS 6120 DT4 DEX 6130 DEX 6140 DT6 DEX 6150 BNE DT7 6160 LDX #0 6170 DT6A LDA LIF,X 6180 JSR SEND 6190 BCS DT6B 6200 INX 6210 CPX #12 6220 BCC DT6A 6230 BCS DTFIN 6240 DT6B RTS 6250 DT7 DEX 6260 BNE DTX 6270 LDA #NBEH 6280 JSR SEND 6290 BCS DT7A 6300 LDA #NBEL 6310 JSR SEND 6320 BCS DT7A 6330 BCC DTFIN 6340 DT7A RTS 6350 DTX JMP SETO 6360 LIF .DBYTE 0,80,0,2,0,16 6370 ;--- 6380 FORMAT LDA #32 6390 STA STAT 6400 LDA IL 6410 ORA #4 6420 STA IL 6430 PLA 6440 PLA 6450 JSR HOMED 6460 LDA #80 6470 STA PISTE 6480 BNE FOR2 6490 FOR1 JSR TSTRDY 6500 BCS ERR3 6510 LDA #$A7 6520 STA FDC 6530 JSR TEMPO 6540 JSR READY 6550 BNE ERR3 6560 FOR2 LDA #0 6570 JSR FOR4 6580 BNE ERR3 6590 LDA #1 6600 JSR FOR4 6610 BNE ERR3 6620 DEC PISTE 6630 BNE FOR1 6640 JSR HOMED 6650 LDA #0 6660 .BYTE $2C 6670 ERR3 LDA #23 6680 STA STAT 6690 RTS 6700 FOR4 STA FACE 6710 JSR INPIST 6720 BNE FOR5 6730 LDA #$16 6740 BIT IL+1 6750 BEQ *+5 6760 JSR FRAME 6770 LDA #0 6780 FOR5 RTS 6790 INPIST LDA #$0B 6800 LDY #$FF 6810 LDX FACE 6820 BEQ *+5 6830 LDA #$09 6840 DEY 6850 STA FDC 6860 STY FACE 6870 JSR TEMPO 6880 LDA #$FE 6890 STA FDC+2 6900 LDA #16 6910 STA SECT 6920 LDY #80 6930 LDX #$B1 6940 FORM0 LDA FDC 6950 LSR A 6960 BCC FORM4 6970 JSR ERRDSK 6980 BNE *+4 6990 LDA #$F0 7000 RTS 7010 FORM4 LSR A 7020 BCS FORM0 7030 LDA #2 7040 JSR WRTXY 7050 LDY #12 7060 LDX #$FF 7070 JSR WRTXY 7080 LDY #3 7090 LDX #$09 7100 JSR WRTXY 7110 LDX #$03 7120 JSR WRTX 7130 LDY #50 7140 LDX #$B1 7150 JSR WRTXY 7160 FORM1 LDY #12 7170 LDX #$FF 7180 JSR WRTXY 7190 LDY #3 7200 LDX #$0A 7210 JSR WRTXY 7220 LDX #$01 7230 JSR WRTX 7240 LDX FDC+1 7250 JSR WRTX 7260 LDX FACE 7270 JSR WRTX 7280 LDX FDC+2 7290 JSR WRTX 7300 LDX #$FE 7310 JSR WRTX 7320 LDX #$08 7330 JSR WRTX 7340 LDY #22 7350 LDX #$B1 7360 JSR WRTXY 7370 LDY #12 7380 LDX #$FF 7390 JSR WRTXY 7400 LDY #3 7410 LDX #$0A 7420 JSR WRTXY 7430 LDX #$04 7440 JSR WRTX 7450 LDY #0 7460 LDX #0 7470 JSR WRTXY 7480 LDX #$08 7490 JSR WRTX 7500 LDY #54 7510 LDX #$B1 7520 JSR WRTXY 7530 DEC FDC+2 7540 DEC SECT 7550 BNE FORM1 7560 FORM2 LDA FDC 7570 LSR A 7580 BCS FORM3 7590 LSR A 7600 BCS FORM2 7610 STX FDC+3 7620 BCC FORM2 7630 FORM3 LDA #0 7640 RTS 7650 WRTX BIT FDC 7660 BNE WRTX 7670 STX FDC+3 7680 RTS 7690 WRTXY BIT FDC 7700 BNE WRTXY 7710 STX FDC+3 7720 DEY 7730 BNE WRTXY 7740 RTS 7750 ; routines R/W disk 7760 PISTE=$CC80 7770 FACE=$CC81 7780 SECT=$CC82 7790 FDC=$C300 7800 CPT=$F2 7810 HOMED JSR TSTRDY 7820 BCS ERR6 7830 LDA #$FF 7840 STA FDC 7850 JSR TEMPO 7860 READY JSR TSTRDY 7870 BCS ERR6 7880 AND #$10 7890 BEQ ERR6 7900 LDA #0 7910 RTS 7920 TEMPO LDX #10 7930 DEX 7940 BNE *-1 7950 RTS 7960 POSPI LDA PISTE 7970 CMP #80 7980 BCC *+4 7990 BCS ERR8 8000 JSR TSTRDY 8010 BCS ERR6 8020 LDA PISTE 8030 EOR #$FF 8040 STA FDC+3 8050 LDA #$E7 8060 STA FDC 8070 JSR TEMPO 8080 JMP READY 8090 ERR8 NOP 8100 ERR6 LDA #24 8110 STA STAT 8120 RTS 8130 WSECT LDA SECT 8140 EOR #$FF 8150 STA FDC+2 8160 LDA #$51 8170 LDX FACE 8180 BNE *+4 8190 ORA #2 8200 STA FDC 8210 JSR TEMPO 8220 LDX #0 8230 WSECT1 LDA FDC 8240 LSR A 8250 BCS WSECT3 8260 LSR A 8270 BCS WSECT1 8280 LDA BUF0,X 8290 EOR #$FF 8300 STA FDC+3 8310 INX 8320 BNE WSECT1 8330 TERDSK JSR TSTRDY 8340 BCS ERR6 8350 WSECT3 NOP 8360 ERRDSK LDA FDC 8370 EOR #$FF 8380 BNE ERR6 8390 RTS 8400 RSECT LDA SECT 8410 EOR #$FF 8420 STA FDC+2 8430 LDA #$71 8440 LDX FACE 8450 BNE *+4 8460 ORA #2 8470 STA FDC 8480 JSR TEMPO 8490 LDX #0 8500 RSECT1 LDA FDC 8510 LSR A 8520 BCS RSECT3 8530 LSR A 8540 BCS RSECT1 8550 LDA FDC+3 8560 EOR #$FF 8570 STA BUF0,X 8580 INX 8590 BNE RSECT1 8600 RSECT3 JMP TERDSK 8610 TSTRDY LDX #10 8620 STX CPT 8630 LDY #0 8640 LDA #1 8650 TSTRD1 BIT FDC 8660 BNE TSTRD2 8670 DEX 8680 BNE TSTRD1 8690 DEY 8700 BNE TSTRD1 8710 DEC CPT 8720 BNE TSTRD1 8730 SEC 8740 RTS 8750 TSTRD2 CLC 8760 LDA FDC 8770 RTS 8780 ; --------- 8790 RREC JSR POSREC 8800 JSR RSECT 8810 RTS 8820 WREC JSR POSREC 8830 JSR WSECT 8840 RTS 8850 POSREC LDA PE 8860 AND #$F 8870 CLC 8880 ADC #1 8890 STA SECT 8900 LDA PE+1 8910 STA PISTE 8920 LDA PE 8930 ASL A 8940 ROL PISTE 8950 ASL A 8960 ROL PISTE 8970 ASL A 8980 ROL PISTE 8990 ASL A 9000 LDX #0 9010 BCC *+3 9020 INX 9030 STX FACE 9040 JSR POSPI 9050 RTS 9060 ; 9070 ; --- SCOPE 9080 VIEWD PHA 9090 LDA #'D 9100 JSR VIDEO 9110 LDA #'A 9120 JSR VIDEO 9130 LDA #'B 9140 JSR VIDEO 9150 JMP VIEW 9160 VIEWI LDA #'I 9170 JSR VIDEO 9180 LDA #'F 9190 JSR VIDEO 9200 LDA #'C 9210 JSR VIDEO 9220 LDA #' 9230 JSR VIDEO 9240 RTS 9250 VIEWC PHA 9260 LDA #'C 9270 JSR VIDEO 9280 LDA #'M 9290 JSR VIDEO 9300 LDA #'D 9310 JSR VIDEO 9320 JMP VIEW 9330 VIEWR PHA 9340 LDA #'R 9350 JSR VIDEO 9360 LDA #'D 9370 JSR VIDEO 9380 LDA #'Y 9390 JSR VIDEO 9400 VIEW LDA #' 9410 JSR VIDEO 9420 PLA 9430 PHA 9440 LSR A 9450 LSR A 9460 LSR A 9470 LSR A 9480 JSR VID1 9490 PLA 9500 JSR VID1 9510 LDA #' 9520 JSR VIDEO 9530 LDA #' 9540 JSR VIDEO 9550 RTS 9560 VID1 AND #$0F 9570 CMP #$0A 9580 BCC *+4 9590 ADC #6 (+7) 9600 CLC 9610 ADC #$30 9620 JMP VIDEO 9630 ; 9640 VIDEO LDY #0 9650 BIT FLESC 9660 BPL *+5 9670 JMP SEQESC 9680 ESC CMP #27 9690 BNE CR 9700 LDA #$80 9710 STA FLESC 9720 RTS 9730 CR CMP #13 9740 BNE LF 9750 JSR PRTCAC 9760 LDA CSR 9770 AND #$C0 9780 ORA #DEBLIN 9790 STA CSR 9800 BNE PRTCUR 9810 LF CMP #10 9820 BNE BS 9830 JSR PRTCAC 9840 BIT FLLF 9850 BMI CAR3 9860 JSR CSRDN 9870 BCC PRTCUR 9880 JSR NEWLIN 9890 BEQ PRTCUR 9900 BS CMP #8 9910 BNE CAR 9920 JSR PRTCAC 9930 JSR CSRL 9940 JMP PRTCUR 9950 CAR JSR CONV 9960 STA (CSR),Y 9970 JSR CSRR 9980 BCC CAR1 9990 JSR NEWLIN 10000 LDA #$C0+DEBLIN 10010 STA CSR 10020 CAR1 LDA CSR 10030 AND #$3F 10040 CMP #DEBLIN 10050 BNE CAR3 10060 CAR2 LDA #$80 10070 BNE *+4 10080 CAR3 LDA #0 10090 STA FLLF 10100 PRTCUR BIT FLCRON 10110 BPL PRTC0 10120 LDA (CSR),Y 10130 STA CARCAC 10140 LDA CURS 10150 STA (CSR),Y 10160 LDA #$80 10170 STA FLCRON 10180 LDA #0 10190 STA CTER1 10200 PRTC0 RTS 10210 PRTCAC BIT FLCRON 10220 BPL PRTC1 10230 LDA CARCAC 10240 STA (CSR),Y 10250 PRTC1 RTS 10260 SEQESC PHA 10270 JSR PRTCAC 10280 PLA 10290 BIT FLESC 10300 BVC *+5 10310 JMP PERC 10320 CMP #'A 10330 BNE ESCB 10340 JSR CSRUP 10350 JMP FINESC 10360 ESCB CMP #'B 10370 BNE ESCC 10380 JSR CSRDN 10390 JMP FINESC 10400 ESCC CMP #'C 10410 BNE ESCD 10420 JSR CSRR 10430 JMP FINESC 10440 ESCD CMP #'D 10450 BNE ESCE 10460 JSR CSRL 10470 JMP FINESC 10480 ESCE CMP #'E 10490 BNE ESCH 10500 CLRDSP LDA #$80 10510 STA FLCRON 10520 LDA #161 10530 STA CURS 10540 JSR CLS 10550 STA CARCAC 10560 LDY #0 10570 STY FLLF 10580 BEQ HOME 10590 ESCH CMP #'H 10600 BNE ESCJ 10610 HOME LDA #DEBLIN 10620 STA CSR 10630 LDA #$D1 10640 STA CSR+1 10650 BNE FINESC 10660 ESCJ CMP #'J 10670 BNE ESCQ 10680 LDA CSR 10690 TAY 10700 PHA 10710 LDA CSR+1 10720 PHA 10730 LDA #0 10740 STA CSR 10750 ESCJ0 LDA #$20 10760 ESCJ1 STA (CSR),Y 10770 INY 10780 BNE ESCJ1 10790 INC CSR+1 10800 LDA CSR+1 10810 CMP #$D7 10820 BCC ESCJ0 10830 PLA 10840 STA CSR+1 10850 PLA 10860 STA CSR 10870 JMP FINESC 10880 ESCQ CMP #'Q 10890 BNE ESCR 10900 LDA #22 10910 BNE CHCUR 10920 ESCR CMP #'R 10930 BNE ESCS 10940 LDA #161 10950 CHCUR STA CURS 10960 JMP FINESC 10970 ESCS CMP #'S 10980 BNE ESCT 10990 JSR SCRLUP 11000 JMP FINESC 11010 ESCT CMP #'T 11020 BNE ESCLES 11030 JSR SCRLDN 11040 JMP FINESC 11050 ESCLES CMP #'< 11060 BNE ESCGRT 11070 LDA #0 11080 STA FLCRON 11090 BEQ FINESC 11100 ESCGRT CMP #'> 11110 BNE ESCPC 11120 LDA #$80 11130 STA FLCRON 11140 BNE FINESC 11150 ESCPC CMP #'% 11160 BNE ESCLJ 11170 LDA #$C0 11180 STA FLESC 11190 JMP PRTCUR 11200 ESCLJ CMP #'j 11210 BNE ESCLK 11220 LDA #$7F 11230 BNE ESCLK1 11240 ESCLK CMP #'k 11250 BNE FINESC 11260 LDA #$FF 11270 ESCLK1 STA MALT 11280 FINESC JSR PRTCUR 11290 LDA #0 11300 STA FLESC 11310 RTS 11320 PERC PHA 11330 LDA FLESC 11340 AND #1 11350 BNE PERC1 11360 PLA 11370 AND #$3F 11380 STA PPERC 11390 LDA #$C1 11400 STA FLESC 11410 JMP PRTCUR 11420 PERC1 PLA 11430 LSR A 11440 ROR CSR 11450 LSR A 11460 ROR CSR 11470 AND #7 11480 CLC 11490 ADC #$D1 11500 STA CSR+1 11510 LDA CSR 11520 AND #$C0 11530 ORA PPERC 11540 CLC 11550 ADC #DEBLIN 11560 STA CSR 11570 BCC *+4 11580 INC CSR+1 11590 JMP FINESC 11600 CSRL DEC CSR 11610 LDA CSR 11620 AND #$3F 11630 CMP #DEBLIN 11640 BCS CSRUP0 11650 LDA CSR 11660 AND #$C0 11670 ORA #ENDLIN 11680 JSR CSRUP+2 11690 BCS CSRL0 11700 LDA CSR 11710 AND #$C0 11720 ORA #DEBLIN 11730 STA CSR 11740 CSRL0 RTS 11750 CSRUP LDA CSR 11760 SEC 11770 SBC #$40 11780 STA CSR 11790 BCS CSRUP0 11800 DEC CSR+1 11810 LDA CSR+1 11820 CMP #$D1 11830 BCS CSRUP0 11840 INC CSR+1 11850 LDA CSR 11860 CLC 11870 ADC #$40 11880 STA CSR 11890 CLC 11900 CSRUP0 RTS 11910 CSRR INC CSR 11920 LDA CSR 11930 AND #$3F 11940 CMP #ENDLIN+1 11950 BCC CSRR0 11960 LDA CSR 11970 AND #$C0 11980 ORA #DEBLIN 11990 JSR CSRDN+2 12000 BCC CSRR0 12010 LDA CSR 12020 AND #$C0 12030 ORA #ENDLIN 12040 STA CSR 12050 CSRR0 RTS 12060 CSRDN LDA CSR 12070 CLC 12080 ADC #$40 12090 STA CSR 12100 BCC CSRDN0 12110 INC CSR+1 12120 LDA CSR+1 12130 CMP #$D7 12140 BCC CSRDN0 12150 DEC CSR+1 12160 LDA CSR 12170 SEC 12180 SBC #$40 12190 STA CSR 12200 SEC 12210 CSRDN0 RTS 12220 SCRLUP LDX #$40 12230 SCRUP0 LDA $D100,X 12240 STA LINE,X 12250 DEX 12260 BNE SCRUP0 12270 JSR SCROLU 12280 LDX #$40 12290 SCRUP1 LDA LINE,X 12300 STA $D6C0,X 12310 DEX 12320 BNE SCRUP1 12330 RTS 12340 SCRLDN LDX #$40 12350 SCRDN0 LDA $D6C0,X 12360 STA LINE,X 12370 DEX 12380 BNE SCRDN0 12390 JSR SCROLD 12400 LDX #$40 12410 SCRDN1 LDA LINE,X 12420 STA $D100,X 12430 DEX 12440 BNE SCRDN1 12450 RTS 12460 NEWLIN JSR SCROLU 12470 LDA #$20 12480 LDX #$40 12490 NEWLN1 STA $D6C0,X 12500 DEX 12510 BNE NEWLN1 12520 RTS 12530 SCROLU LDA #$D1 12540 STA MU+2 12550 STA MU+5 12560 LDX #0 12570 MU LDA $D140,X 12580 STA $D100,X 12590 INX 12600 BNE MU 12610 INC MU+2 12620 INC MU+5 12630 LDA MU+2 12640 CMP #$D7 12650 BCC MU 12660 RTS 12670 SCROLD LDA #$D6 12680 STA MD+2 12690 STA MD+5 12700 LDX #$C0 12710 MD LDA $D600,X 12720 STA $D640,X 12730 DEX 12740 BNE MD 12750 DEC MD+2 12760 DEC MD+5 12770 LDA MD+2 12780 CMP #$D1 12790 BCS MD 12800 RTS 12810 CONV AND MALT 12820 CMP #28 12830 BNE *+4 12840 LDA #'s 12850 CMP #29 12860 BNE *+4 12870 LDA #'# 12880 CMP #124 12890 BNE *+6 12900 LDA #125 12910 BNE CONV1 12920 CMP #125 12930 BNE *+4 12940 LDA #124 12950 CONV1 RTS