0100 ; SAVE#D:ROBOX4.M65 0110 ; 0120 DLIST .BYTE $70,$70,$70,$F0,$42 0130 .WORD STATUS 0140 .BYTE $A0,$42 0150 .WORD SCMEM 0160 .BYTE 2,2,2,2,2,2,2,2,2,2,2 0170 .BYTE 2,2,2,2,$A0,$42 0180 .WORD BOTTOM 0190 .BYTE 2,2,2,$42 0200 .WORD BOTTOM 0210 .BYTE $41 0220 .WORD DLIST 0230 ; 0240 ;Introduction Display List 0250 ; 0260 IDLST .BYTE $70,$70,$70,$70,$70 0270 .BYTE $70,$70,$70,$70,$42 0280 .WORD ITEXT 0290 .BYTE $70,$02,$41 0300 .WORD IDLST 0310 ; 0320 A2I .BYTE $40,$00,$20,$60 0330 I2A .BYTE $20,$40,$00,$60 0340 DLICLRS .BYTE $04,$92,$02 0350 DLICLRS2 .BYTE $0A,$0A,$0C 0360 BOXPOS .BYTE 111,115,119,123,127,131,135,139 0370 ; 0380 STATUS .SBYTE ". Terminal Type: XV-BBK/7M:QSO ." 0390 BOTTOM .SBYTE ". ........ .......... ........ ." 0400 .SBYTE " .... .... " 0410 .SBYTE " .... .. .. 00 .. .. .... " 0420 .SBYTE " .... .. .. .... " 0430 ITEXT .SBYTE " press " 0440 .SBYTE " START " 0450 ; 0460 ;Special Keys codes 0470 ; 0480 KEYS .BYTE $FF,$FE,$FD,$9F,$9E 0490 .BYTE $9D,$9C,$9B,$7F,$7E 0500 .BYTE $7D,$1F,$1E,$1D,$1C 0510 .BYTE $1B 0520 ;INTRO PLAYER POSITS 0530 PLXPOS .BYTE 64,95,129,160 0540 ; 0550 INTRO LDA # IDLST 0580 STA SDLSTL+1 0590 LDA #0 0600 STA COLOR2 0610 STA COLOR4 0620 ; 0630 LDY #0 0640 SETC1 STY COLOR1 0650 JSR WAITJIFF 0660 JSR WAITJIFF 0670 INY 0680 CPY #16 0690 BNE SETC1 0700 LDA #1 0710 STA GPRIOR 0720 ; 0730 WAITCN LDA CONSOL 0740 CMP #6 0750 BNE WAITCN 0760 ; 0770 LDA # DLIST 0800 STA SDLSTL+1 0810 ; 0820 LDY #3 0830 SETP1 LDA #$FF 0840 STA GRAFP0,Y 0850 LDA #0 0860 STA PCOLR0,Y 0870 LDA #3 0880 STA SIZEP0,Y 0890 DEY 0900 BPL SETP1 0910 ; 0920 LDX #61 0930 MOVP1 LDY #3 0940 MOVP2 LDA PLXPOS,Y 0950 STA HPOSP0,Y 0960 DEY 0970 BPL MOVP2 0980 JSR WAITJIFF 0990 JSR WAITJIFF 1000 JSR WAITJIFF 1010 DEC PLXPOS 1020 DEC PLXPOS+1 1030 INC PLXPOS+2 1040 INC PLXPOS+3 1050 DEX 1060 BPL MOVP1 1070 LDA #0 1080 LDX #3 1090 CLRP1 STA HPOSP0,X 1100 DEX 1110 BPL CLRP1 1120 RTS 1130 WAITJIFF PHA 1140 LDA #0 1150 STA RTCLOK 1160 WAITJ1 LDA RTCLOK 1170 BEQ WAITJ1 1180 PLA 1190 RTS 1200 ; 1210 ERASEPM LDA #0 1220 TAY 1230 ERPM STA PLR0,Y 1240 STA PLR1,Y 1250 STA PLR2,Y 1260 STA PLR3,Y 1270 INY 1280 BNE ERPM 1290 RTS 1300 ; 1310 ;Put a byte to the screen 1320 ; 1330 CLRSCR LDA #125 1340 EPUT CMP #EOL ;a CR? 1350 BNE TRYDEL 1360 PUTCR LDA #0 1370 STA XPOS 1380 INC YPOS 1390 JMP SCROLL 1400 ; 1410 TRYDEL CMP #126 ;delete? 1420 BNE TRYCLR 1430 JSR MOVELEFT 1440 JSR GETSCR 1450 LDA #0 1460 TAY 1470 STA (SCR),Y 1480 RTS 1490 TRYCLR CMP #125 1500 BNE NORMAL 1510 LDY #0 1520 TYA 1530 CLRSC STA SCMEM,Y 1540 STA SCMEM+$0100,Y 1550 STA SCMEM+$0200,Y 1560 INY 1570 BNE CLRSC 1580 STA XPOS 1590 STA YPOS 1600 RTS 1610 ; 1620 NORMAL JSR ASC2IC 1630 PHA 1640 JSR GETSCR 1650 LDY #0 1660 PLA 1670 STA (SCR),Y 1680 ; 1690 GORIGHT LDX XPOS 1700 INX 1710 CPX #$20 1720 BCC EPLEAV 1730 INC YPOS 1740 JSR SCROLL 1750 LDX #0 1760 EPLEAV STX XPOS 1770 RTS 1780 ; 1790 MOVELEFT LDA XPOS 1800 TAX 1810 ORA YPOS 1820 BEQ GOLEAV 1830 DEX 1840 BPL GOX 1850 LDX #31 1860 LDY YPOS 1870 BNE MVUP 1880 LDX #0 1890 BEQ GOX 1900 MVUP DEC YPOS 1910 GOX STX XPOS 1920 GOLEAV RTS 1930 ; 1940 GETSCR LDA # <[SCMEM-32] 1950 STA SCR 1960 LDA # >[SCMEM-32] 1970 STA SCR+1 1980 LDY YPOS 1990 GETSC1 LDA SCR 2000 CLC 2010 ADC #$20 2020 STA SCR 2030 BCC GODWN 2040 INC SCR+1 2050 GODWN DEY 2060 BPL GETSC1 2070 LDA SCR 2080 CLC 2090 ADC XPOS 2100 STA SCR 2110 BCC GETSCDN 2120 INC SCR+1 2130 GETSCDN RTS 2140 ; 2150 SCROLL LDY YPOS 2160 CPY #BOTLIN 2170 BCC SCMOVEDN 2180 LDA #BOTLIN-1 2190 STA YPOS 2200 LDA # SCMEM 2230 STA SCR+1 2240 LDA # <[SCMEM+32] 2250 STA SCR2 2260 LDA # >[SCMEM+32] 2270 STA SCR2+1 2280 LDX #0 2290 SCMOVE LDY #31 2300 SCMOVIT LDA (SCR2),Y 2310 STA (SCR),Y 2320 DEY 2330 BPL SCMOVIT 2340 LDA SCR2+1 2350 STA SCR+1 2360 LDA SCR2 2370 STA SCR 2380 CLC 2390 ADC #$20 2400 STA SCR2 2410 LDA SCR2+1 2420 ADC #0 2430 STA SCR2+1 2440 INX 2450 CPX #BOTLIN 2460 BNE SCMOVE 2470 SCMOVEDN RTS 2480 ; 2490 ; 2500 ASC2IC JSR BITER 2510 ORA A2I,X 2520 LDX SAVX2 2530 RTS 2540 ; 2550 ; 2560 IC2ASC JSR BITER 2570 ORA I2A,X 2580 LDX SAVX2 2590 RTS 2600 ; 2610 BITER PHA 2620 ROL A 2630 ROL A 2640 ROL A 2650 ROL A 2660 AND #3 2670 STX SAVX2 2680 TAX 2690 PLA 2700 AND #$9F 2710 RTS 2720 ; 2730 EPUTX STX SAVEX 2740 JSR EPUT 2750 LDX SAVEX 2760 RTS 2770 ; 2780 GETKEY LDA CH 2790 CMP #$FF 2800 BEQ GETKEY 2810 LDX #$FF 2820 STX CH 2830 STA OLDC 2840 K0 TAY 2850 CPY #192 2860 BCC K1 2870 LDY #$9A 2880 K1 LDA (KEYDEF),Y 2890 STA OLDAC 2900 CMP #$80 2910 BEQ GETKEY 2920 CMP #$81 2930 BNE K2 2940 LDA PAUSE? 2950 EOR #1 2960 STA PAUSE? 2970 JMP GETKEY 2980 ; 2990 K2 CMP #$82 3000 BNE K3 3010 LDA CAPS 3020 EOR #$40 3030 STA CAPS 3040 JMP GETKEY 3050 ; 3060 K3 CMP #$83 3070 BNE K4 3080 LDA #$40 3090 STA CAPS 3100 BNE GETKEY 3110 ; 3120 K4 CMP #$84 3130 BNE K5 ;click? 3140 LDA CLICK? 3150 EOR #1 3160 STA CLICK? 3170 JMP GETKEY 3180 ; 3190 K5 CMP #$85 3200 BEQ GETKEY 3210 LDA OLDC 3220 CMP #64 3230 BCC K6 3240 LDA OLDAC 3250 CMP #97 3260 BCC K6 3270 CMP #123 3280 BCS K6 3290 LDA CAPS 3300 BEQ K6 3310 ORA OLDC 3320 JMP K0 3330 ; 3340 K6 LDX #15 3350 K7 LDA KEYS,X 3360 CMP OLDAC 3370 BEQ K9 3380 DEX 3390 BPL K7 3400 LDA OLDAC 3410 K9 CMP #$20 3420 BCC GETKEY 3430 LDY CLICK? 3440 BEQ K10 3450 LDY #$7F 3460 CLKIT STY CONSOL 3470 LDX #8 3480 CLK1 DEX 3490 BNE CLK1 3500 DEY 3510 BPL CLKIT 3520 K10 RTS 3530 ; 3540 EPRINT JSR EXPANDIT 3550 LDA # EXPBUF 3580 STA INDR+1 3590 LDA #0 3600 STA EOLFLAG 3610 PPAGE LDY #0 3620 PLINE LDA (INDR),Y 3630 STA MYBUF,Y 3640 INY 3650 CMP #EOL 3660 BNE PLN2 3670 INC EOLFLAG 3680 BNE BREAK 3690 PLN2 CPY #LINELEN 3700 BNE PLINE 3710 DEY 3720 SLOOP LDA (INDR),Y 3730 CMP #32 3740 BEQ SBRK 3750 DEY 3760 BNE SLOOP 3770 LDY #LINELEN-1 3780 SBRK INY 3790 BREAK STY TEMP 3800 LDY #0 3810 COPY LDA (INDR),Y 3820 STY SAVEY 3830 CMP #EOL 3840 BEQ COP1 3850 JSR EPUT 3860 COP1 LDA PAUSE? 3870 BEQ RESY 3880 JSR WAITJIFF 3890 JSR WAITJIFF 3900 RESY LDY SAVEY 3910 INY 3920 CPY TEMP 3930 BNE COPY 3940 TYA 3950 CLC 3960 ADC INDR 3970 STA INDR 3980 BCC EPRPOS 3990 INC INDR+1 4000 EPRPOS LDA XPOS 4010 BEQ EOLTEST 4020 JSR PUTCR 4030 EOLTEST LDA EOLFLAG 4040 BEQ PPAGE 4050 RTS 4060 ; 4070 EXPANDIT STA INDR 4080 STY INDR+1 4090 LDX #$FF ;RESULT 4100 LDY #$FF ;ENTRY 4110 EXP1 INY 4120 INX 4130 LDA (INDR),Y 4140 STA EXPBUF,X 4150 CMP #EOL 4160 BNE EXP2 4170 RTS ;FINISHED! 4180 EXP2 AND #$7F 4190 CMP #$20 4200 BCS EXP1 4210 LDA (INDR),Y 4220 BPL EXPNV 4230 AND #$7F 4240 CLC 4250 ADC #$20 4260 EXPNV STY SAVEY 4270 ASL A 4280 TAY 4290 LDA TOKADR,Y 4300 STA EXPADR+1 4310 LDA TOKADR+1,Y 4320 STA EXPADR+2 4330 LDY #$FF 4340 DEX 4350 EXPLP INY 4360 INX 4370 EXPADR LDA $FFFF,Y 4380 STA EXPBUF,X 4390 BPL EXPLP 4400 AND #$7F 4410 STA EXPBUF,X 4420 LDY SAVEY 4430 JMP EXP1 4440 ;Input Routine 4450 ; 4460 INPUT LDA #'> 4470 JSR EPUT 4480 LDX #1 4490 STX IPUT 4500 DEX 4510 STX ILEN 4520 ; 4530 INLOOP STX SAVEX 4540 JSR GETKEY 4550 LDX SAVEX 4560 CMP #EOL 4570 BEQ INDONE 4580 AND #$7F 4590 CMP #$20 4600 BCC INLOOP 4610 CMP #126 ;Delete? 4620 BNE INEXT 4630 CPX #$00 4640 BEQ INLOOP 4650 DEX 4660 JSR EPUTX 4670 JMP INLOOP 4680 ; 4690 INEXT CMP #96 4700 BEQ INLOOP 4710 CMP #123 4720 BCS INLOOP 4730 STA CHAR 4740 CMP #'A 4750 BCC NOTUP 4760 CMP #'Z+1 4770 BCS NOTUP 4780 CLC 4790 ADC #$20 4800 NOTUP CPX #63 4810 BEQ INLOOP 4820 STA MYBUF,X 4830 LDA CHAR 4840 JSR EPUTX 4850 INX 4860 BNE INLOOP 4870 ; 4880 INDONE STA MYBUF,X 4890 STX ILEN 4900 DEC IPUT 4910 JMP EPUT 4920 ; 4930 VBLANK CLD 4940 LDA #0 4950 TAX 4960 VBL1 STA PLR0,X 4970 INX 4980 BNE VBL1 4990 LDA IPUT 5000 BEQ VBI1.OUT 5010 LDA XPOS 5020 ASL A 5030 ASL A 5040 CLC 5050 ADC #48+16 5060 STA HPOSP0 5070 LDA YPOS 5080 ASL A 5090 ASL A 5100 ASL A 5110 CLC 5120 ADC #39+19 5130 TAX 5140 ; 5150 LDA SRTIMR 5160 BEQ BLINK? 5170 ; 5180 LDA #$F0 5190 STA PLR0,X 5200 STA CSHAPE 5210 LDA #60 5220 STA BLINK 5230 ; 5240 BLINK? LDA CSHAPE 5250 DEC BLINK 5260 BNE VEXIT 5270 ; 5280 LDY #30 5290 STY BLINK 5300 EOR #$F0 5310 STA CSHAPE 5320 VEXIT STA PLR0,X 5330 ; 5340 VBI1.OUT INC MYCNT2 5350 LDA MYCNT2 5360 CMP #2 5370 BNE VBI1.XIT 5380 LDA #0 5390 STA MYCNT2 5400 ROTAT LDX #7 5410 MAPSCV LDA CHARSET+$0230,X ;^F 5420 ASL A 5430 STA CHARSET+$0230,X 5440 ROL CHARSET+$0228,X 5450 BCC MAPP2 5460 LDA #1 5470 CLC 5480 ADC CHARSET+$0230,X 5490 STA CHARSET+$0230,X 5500 MAPP2 LDA CHARSET+$0288,X 5510 ASL A 5520 STA CHARSET+$0288,X 5530 ROL CHARSET+$0280,X 5540 BCC MAPP3 5550 LDA #1 5560 CLC 5570 ADC CHARSET+$0288,X 5580 STA CHARSET+$0288,X 5590 MAPP3 DEX 5600 BPL MAPSCV 5610 VBI1.XIT JMP XITVBV 5620 ; 5630 ;Immediate Vblank 5640 ; 5650 VBI2 LDA #0 5660 STA DLIDX 5670 LDX GOFLAG 5680 BEQ VBI2.XIT 5690 INC MYCOUNT 5700 LDX MYCOUNT 5710 CPX #8 5720 BNE VBI2.XIT 5730 STA MYCOUNT 5740 LDY BLKPOS 5750 INY 5760 CPY #8 5770 BNE NON0 5780 LDY #0 5790 NON0 STY BLKPOS 5800 LDA BOXPOS,Y 5810 STA HPOSP1 5820 TYA 5830 EOR #7 5840 TAY 5850 LDA BOXPOS,Y 5860 STA HPOSP2 5870 ; 5880 LDY #12 5890 VB2F LDA CHARSET+$0218,Y 5900 CMP #$D0 5910 BEQ VB2FN 5920 DEY 5930 BPL VB2F 5940 INY 5950 VB2FN LDA #$C0 5960 STA CHARSET+$0218,Y 5970 LDA #$D0 5980 CPY #0 5990 BNE VB2OK 6000 LDY #13 6010 VB2OK STA CHARSET+$0217,Y 6020 VBI2.XIT JMP SYSVBV 6030 ; 6040 ;Display List Interrupt 6050 ; 6060 DLI1 PHA 6070 TXA 6080 PHA 6090 LDX DLIDX 6100 LDA DLICLRS,X 6110 STA COLPF2 6120 STA WSYNC 6130 LDA DLICLRS2,X 6140 STA COLPF1 6150 STA WSYNC 6160 INC DLIDX 6170 PLA 6180 TAX 6190 PLA 6200 RTI 6210 ; 6220 ;Routine Test 6230 ; 6240 BEGIN LDA KEYDEF 6250 ORA KEYDEF+1 6260 BNE GOCLR 6270 LDA #$FE 6280 STA KEYDEF 6290 STA KEYDEF+1 6300 GOCLR JSR CLRSCR 6310 STA IPUT 6320 STA COLOR4 6330 STA CAPS 6340 STA PAUSE? 6350 INC PAUSE? 6360 STA CLICK? 6370 STA DLIDX 6380 STA BLKPOS 6390 STA MYCOUNT 6400 STA MYCNT2 6410 STA GOFLAG 6420 LDA # >CHARSET 6430 STA CHBAS 6440 LDA #$F0 6450 STA CSHAPE 6460 LDA #30 6470 STA BLINK 6480 LDA #61 6490 STA SDMCTL 6500 LDA #7 6510 LDY # VBLANK 6530 JSR SETVBV 6540 LDA #6 6550 LDY # VBI2 6570 JSR SETVBV 6580 LDA # DLI1 6610 STA VDSLST+1 6620 LDA #$C0 6630 STA NMIEN 6640 JSR INTRO 6650 LDA # >MYPM 6660 STA PMBASE 6670 LDA #3 6680 STA GRACTL 6690 JSR ERASEPM 6700 STA SIZEP0 6710 STA SIZEP1 6720 STA SIZEP2 6730 LDA #$44 6740 STA PCOLR0 6750 LDA #$38 6760 STA PCOLR1 6770 LDA #$A8 6780 STA PCOLR2 6790 INC GOFLAG 6800 LDY #5 6810 LDA #$78 6820 DEFP1 STA PLR1+183,Y 6830 STA PLR2+215,Y 6840 DEY 6850 BPL DEFP1