10REM **** PC-UTIL ******
20REM VERSION 2.00 250999.
30REM R. LEURS - BORN (L)
40REM====================
50
55ESCAPE=OFF
60R=#9000 ; REM PLAATS VAN DE CODE TIJDENS ASSEMBLEREN
70P.$16$15"SOURCE PC-UTIL"';DOP."=";U.C.>=15
80P.''"CLEANING SPACE"'';@=0;NONMI
90F.X=R TO R+#FFC S.4;!X=#FFFFFFFF;N.
100P.'"PASS1";PASS2;GOS.a
110P.'"PASS2";PASS1;GOS.a
120P.'ERRORS" ERRORS, "WARNINGS" WARNINGS"''
130P.''"CODE VAN #"&PCROM" T/M #"&(P-1)'
140P."NOG VRIJ: "(#AFBF-P)" BYTES"''
150 $(R+#FC0)="C:\ATOM\HELP\ATOMHELP.IDX"
160 $(R+#FE0)="C:\ATOM\HELP\ATOMHELP.TXT"
165 ESCAPE=ON
170 END
180
190a
200 ASM-B
210
220 .OPTION #40
230 .CODE #A000
240 .RAM R
250
260 :ZP = #90
270 :HS = #DE
280 :VS = #DF
290 :OSBYTE = #FFC2
300 :LEESBYTE = #FFC5
310 :ZENDBYTE = #FFC8
320 :WRITE = #FFF4
330
340 :PCROM .BY #40,#BF
350
360\interpreteerroutine
370 LDX @#FF
380 :ZOEK0 LDY #5E
390 DEY
400 :ZOEK1 INX
410 INY
420 :ZOEK2 LDA TABEL,X
430 BMI ZOEK4
440 CMP (#05),Y
450 BEQ ZOEK1
460 DEX
470 :ZOEK3 INX
480 LDA TABEL,X
490 BPL ZOEK3
500 INX
510 LDA (#05),Y
520 CMP @#2E
530 BNE ZOEK0
540 INY
550 DEX
560 BCS ZOEK2
570 :ZOEK4 STA #53
580 LDA TABEL+1,X
590 STA #52
600 STY #03
610 LDX #04
620 JMP (#52)
630
640 :TABEL
650 .AS "CHAIN" ; .DB KETTING
660 .AS "FILECNV" ; .DB FILECNV
670 .AS "GWINDOW" ; .DB GWINDOW
680 .AS "GWOFF" ; .DB GWOFF
690 .AS "HELP" ; .DB HELP
700 .AS "HFILL" ; .DB HFILL
710 .AS "GETWIN" ; .DB WINGET
720 .AS "ORIGIN" ; .DB ORIGIN
730 .AS "OSCLI" ; .DB OSCLI
740 .AS "PCC" ; .DB PCC
750 .AS "PDMENU" ; .DB PDMENU
760 .AS "POWERDOWN" ; .DB POWERDOWN
767 .AS "RGET" ; .DB RGET
769 .AS "RPUT" ; .DB RPUT
770 .AS "SAVWIN" ; .DB SAVWIN
777 .AS "SCOPY" ; .DB SCOPY
780 .AS "SCREEN" ; .DB SCREEN
790 .AS "TXMOD" ; .DB TXMOD
800 .AS "UTIL" ; .DB PCUTIL
810 .AS "VCC" ; .DB VCC
820 .AS "VDU" ; .DB VCC
830 .AS "VFILL" ; .DB VFILL
840 .AS "VIDEO" ; .DB VIDEO
850 .AS "XBLOCK" ; .DB XBLOCK
860 .AS "XCIRCLE" ; .DB XCIRCLE
870 .AS "XLINE" ; .DB XLINE
880 .AS "XPAINT" ; .DB XPAINT
890 .AS "XPALET" ; .DB XPALET
900 .AS "XSTYLE" ; .DB XSTYLE
910 .AS "XTRIANGLE" ; .DB XTRIANGLE
920 .DB #C558
930
940
950 :STACK LDX @#00
960 STX #04
970 RTS
980
990 :COMMANDO PHA
1000 LDA @#00
1010 JSR ZENDBYTE
1020 PLA
1030 JMP ZENDBYTE
1040
1050 :LEESPAR6 JSR #C78B;JSR #C231
1060 :LEESPAR5 JSR #C78B;JSR #C231
1070 :LEESPAR4 JSR #C78B;JSR #C231
1080 :LEESPAR3 JSR #C78B;JSR #C231
1090 :LEESPAR2 JSR #C78B;JSR #C231
1100 :LEESPAR1 JMP #C4E1
1110
1120 :ZETSEM LDA @#0B;JSR OSBYTE;BCC ZETSEM+2;RTS
1130 :WISSEM PHA;LDA @#0A;JSR OSBYTE;PLA;RTS
1140
1150 \ HELP ROUTINE
1160 :PCUTIL JSR #C4E4;JSR #F7D1
1170 .BY 16
1180 :NAAM .AS "PC-UTIL V2.00 26-09-1999"
1190 .BY #0D,#0A,#0A
1200 .AS "(c) Roland Leurs 1995-1997",#0D,#0A,#0A,#EA
1210 JSR PCBOX7
1220 STA ZP+1
1230 STA ZP+2
1240 TAY
1250 :PCBOX1 LDA TABEL,Y
1260 STA ZP+2
1270 CMP @#C5
1280 BNE PCBOX2
1290 INY
1300 LDA TABEL,Y
1310 CMP @#58
1320 BEQ PCBOX8
1330 DEY
1340 :PCBOX2 LDA ZP+2
1350 AND @#F0
1360 CMP @#A0
1370 BNE PCBOX3
1380 LDA ZP
1390 CMP @#0B
1400 BNE PCBOX5
1410 LDA ZP+1
1420 CMP @#02
1430 BEQ PCBOX6
1440 CLC
1450 ADC @#01
1460 STA ZP+1
1470 JSR PCBOX7
1480 INY
1490 INY
1500 JMP PCBOX1
1510 :PCBOX3 LDA ZP
1520 CLC
1530 ADC @#01
1540 STA ZP
1550 CMP @#0B
1560 BEQ PCBOX1
1570 LDA ZP+2
1580 JSR #FFF4
1590 CMP @#20
1600 BNE PCBOX4
1610 JMP PCBOX5
1620 :PCBOX4 INY
1630 JMP PCBOX1
1640 :PCBOX5 LDA @#20
1650 STA ZP+2
1660 JMP PCBOX3
1670 :PCBOX6 JSR #FFED
1680 JSR PCBOX7
1690 STA ZP+1
1700 INY
1710 INY
1720 JMP PCBOX1
1730 :PCBOX7 LDA @#00
1740 STA ZP
1750 RTS
1760 :PCBOX8 JSR #FFED
1770 JSR #FFED
1780 JMP #C55B
1790
1800 :VCC \VIDEO CONTROL CODE
1810 LDA @#C8;STA ZP;LDA @#FF;STA ZP+1
1820 BNE PCCR
1830
1840 :PCC \PRINTER CONTROL CODE
1850 LDA @<PCCV;STA ZP;LDA @>PCCV;STA ZP+1
1860 :PCCR JSR ZETSEM
1870 :PCC0 JSR #F291;CMP @#0D;BEQ PCC_END
1880 CMP @CH";";BEQ PCC_END;CMP @CH",";BEQ P+4
1890 DEC #03;JSR #C78B;LDA #16;JSR ZCC
1900 JSR#F291;CMP @CH"~";BNE PCC1
1910 LDA #25;JSR ZCC;INC #03
1920 :PCC1 DEC #03;LDA @#00;STA #04;BEQ PCC0
1930 :PCC_END JSR WISSEM;DEC #03;JSR STACK;JMP #C558
1940 :ZCC JMP (ZP)
1950 :PCCV PHA;LDA @#47;JSR COMMANDO;PLA;JMP ZENDBYTE
1960
1970 :GWINDOW \ GRAFISCH VENSTER DEFINIEREN
1980 JSR LEESPAR4;LDX @#00;JSR ZETSEM;LDA @#4C;JSR COMMANDO
1990 :GWINDOW1 LDA #16,X;JSR ZENDBYTE;LDA #25,X;JSR ZENDBYTE
2000 INX;CPX @#04;BNE GWINDOW1
2010 JSR WISSEM;JSR STACK;JMP #C55B
2020
2030 :GWOFF \ GRAFISCH VENSTER OPHEFFEN
2040 JSR #C4E4;JSR ZETSEM;LDA @#4D
2050 JSR COMMANDO;JSR WISSEM;JMP #C55B
2060
2070 :SYNERR LDX @135;LDA @#0C;JMP OSBYTE
2080
2090 :VFILL \ VERTIKAAL VULLEN
2100 JSR #C78B;JSR #F291;CMP @CH"T";BNE SYNERR
2110 JSR #F291;CMP @CH"O";BNE SYNERR;JSR #C231;JSR LEESPAR3
2120 LDA #16;STA ZP;LDA #25;STA ZP+1
2130 LDA #17;STA ZP+4;LDA #26;STA ZP+5
2140 LDA #18;STA ZP+2;LDA #27;STA ZP+3
2150 LDA #19;STA ZP+6;LDY @0;LDA @#4A;BNE FILL
2160
2170 :HFILL \ HORIZONTAAL VULLEN
2180 JSR #C78B;JSR #C231;JSR #C78B;JSR #F291;CMP @CH"T";BNE SYNERR
2190 JSR #F291;CMP @CH"O";BNE SYNERR;JSR #C231;JSR LEESPAR2
2200 LDA #16;STA ZP;LDA #25;STA ZP+1
2210 LDA #17;STA ZP+2;LDA #26;STA ZP+3
2220 LDA #18;STA ZP+4;LDA #27;STA ZP+5
2230 LDA #19;STA ZP+6;LDY @2;LDA @#49
2240 :FILL STA ZP+7;JSR ZETSEM
2250 INC ZP+4;BNE P+4;INC ZP+5
2260 :FILL0 LDA ZP+7;JSR COMMANDO;LDX @0
2270 :FILL1 LDA ZP,X;JSR ZENDBYTE;INX;CPX @4;BNE FILL1
2280 LDA ZP+6;JSR ZENDBYTE
2290 CLC;LDA ZP,Y;ADC @1;STA ZP,Y;LDA ZP+1,Y;ADC @0;STA ZP+1,Y
2300 LDA ZP,Y;CMP ZP+4;BNE FILL0
2310 LDA ZP+1,Y;CMP ZP+5;BNE FILL0
2320 JSR WISSEM;JSR STACK;JMP #C55B
2330
2340 :SCREEN \ SELECTEER BEELDPAGINA
2345 JSR #F291;CMP @CH"/";BNE SCREEN0;JMP SCOPY
2350 :SCREEN0 DEC #03;JSR LEESPAR1;JSR ZETSEM;LDA #16
2360 AND @#80;BNE SCREEN1
2370 LDA @#50;JSR COMMANDO;LDA #16;AND @#0F;JSR ZENDBYTE
2380 :SCREEN1 LDA #16;AND @#40;BNE SCREEN2
2390 LDA @#4F;JSR COMMANDO;LDA #16;AND @#0F;JSR ZENDBYTE
2400 :SCREEN2 JSR WISSEM;JSR STACK;JMP #C55B
2410
2420 :ORIGIN
2430 JSR LEESPAR2;JSR ZETSEM;LDA @#4E;JSR COMMANDO;LDX @0
2440 :ORIGIN1 LDA #16,X;JSR ZENDBYTE
2450 LDA #25,X;JSR ZENDBYTE;INX;CPX @2;BNE ORIGIN1
2460 JSR WISSEM;JSR STACK;JMP #C55B
2470
2480 :ED64 LDX @#00
2490 :PCRUN JSR #C4E4
2500 LDA @CH"P";STA #100;LDA @CH"C";STA #101;LDA @CH" ";STA #102
2510 LDY @#03
2520 :PCRUN1 LDA #AF00,X;STA #100,Y;INX;INY
2530 CMP @#0D;BNE PCRUN1
2540 JSR #FFF7;JMP #C55B
2550
2560 :EDIT LDX @#20;BNE PCRUN
2570 :MODEM LDX @#40;BNE PCRUN
2580 :PCTOOLS LDX @#60;BNE PCRUN
2590 :TEKENPRG LDX @#80;BNE PCRUN
2600 :BASIC LDX @#A0;BNE PCRUN
2610
2620 :HELP \ ONLINE HELPFUNCTIE
2630 JSR ZETSEM;LDA @#5A;JSR COMMANDO;LDA @8;JSR ZENDBYTE
2640 JSR LEESBYTE;JSR WISSEM;PHA;JSR #F7D1
2650 .BY #11,#0C,#10,#0A,#0E
2660 .AS "**************************",#0A,#0D
2670 .AS "* ATOM ON-LINE HELP V1.1 *",#0A,#0D
2680 .AS "* (c) Pascalle en Roland *",#0A,#0D
2690 .AS "**************************",#0A,#0D
2700 .BY #0A,#0A,#EA
2710 LDA @17;JSR #FFF4;PLA;PHA;JSR #FFF4
2720 JSR #F291;DEC #03;CMP @#0D;BEQ HELPSYN;CMP @CH";";BEQ HELPSYN
2730 JMP HELPSTR
2740 :HELPSYN JSR #C4E4;JSR #F7D1
2750 .BY 17,9
2760 .AS "Syntax: HELP <keyword>",#0D,#0A,#0D
2770 .AS "Keywords:",#0D,#0A,#11,#EA
2780 PLA;PHA;JSR #FFF4
2790 JSR OPENIDX;LDA @#00;STA ZP
2800 :HELPSYN1 JSR #FFD4;BCS HELPEND;CMP @#0D;BEQ HELPSYN2
2810 JSR #FFF4;INC ZP;BNE HELPSYN1
2820 :HELPSYN2 LDA ZP;CMP @20;BEQ HELPSYN3
2830 LDA @#20;JSR #FFF4;INC ZP;BNE HELPSYN2
2840 :HELPSYN3 JSR LEESPTR \ SKIP INDEX
2850 LDA @#00;STA ZP;BEQ HELPSYN1
2860 :HELPEND JSR #FFCB;JSR #F7D1
2870 .BY #0A,#0D,#0F,#11,#EA
2880 PLA;JSR #FFFF4;JMP #C55B
2890
2900 :OPENIDX LDA @#C0;STA ZP;LDA @#AF;STA ZP+1;LDX @ZP;SEC;JSR #FFCE
2910 CMP @#00;BEQ OPENERR;TAY;RTS
2920 :OPENTXT LDA @#E0;BNE OPENIDX+2
2930 :OPENERR LDX ZP;JSR #FFED
2940 :OPENERR1 LDA #AF00,X;JSR #FFF4;INX;CMP @#0D;BNE OPENERR1
2950 LDX @49;LDA @#0C;JMP OSBYTE
2960 :NOHELP JSR #FFCB;JSR #F7D1
2970 .AS "Geen hulp aanwezig voor ",#EA
2980 LDX @#00
2990 :NOHELP1 LDA #140,X;JSR #FFF4;INX;CMP @#0D;BNE NOHELP1
3000 LDX @200;LDA @#0C;JMP OSBYTE
3010
3020 :LEESPTR JSR #FFD4;STA ZP+2;JSR #FFD4;STA ZP+3
3030 JSR #FFD4;STA ZP+4;JSR #FFD4;STA ZP+5
3040 RTS
3050
3060 :HELPSTR LDX @#00
3070 :HELPSTR1 JSR #F291;STA #140,X;INX;CMP @#0D;BEQ HELPSTRE
3080 CMP @CH";";BNE HELPSTR1
3090 :HELPSTRE DEC #03;LDA @#0D;DEX;STA #140,X;JSR #C4E4;JSR OPENIDX
3100 LDX @#00
3110 :HELPSTR2 JSR #FFD4;BCS NOHELP
3120 STA #100,X;INX;CMP @#0D;BNE HELPSTR2
3130 LDX @#00
3140 :HELPSTR3 LDA #100,X;CMP #140,X;BEQ HELPSTR4
3150 JSR LEESPTR;LDX @#00;BEQ HELPSTR2
3160 :HELPSTR4 INX;CMP @#0D;BNE HELPSTR3
3170 \ OP DEZE PLAATS IS DE ZOEKSTRING IN DE INDEXFILE GEVONDEN
3180 \ EN KAN DE PTR GELEZEN WORDEN.
3190 JSR LEESPTR;JSR #FFCB \ POINTER GELEZEN, SLUIT INDEXFILE
3200 JSR OPENTXT;LDX @ZP+2;JSR #FFD7 \ ZET POINTER IN TEXTFILE
3210 LDA @17;JSR #FFF4;LDA @9;JSR #FFF4;LDA @32;STA ZP
3220 :HELPSTR5 JSR #FFD4;BCS HELPSTR6;CMP @126;BEQ HELPSTR6
3230 CMP @13;BNE HELPSTR7;LDA @17;JSR #FFF4;PLA;PHA;JSR #FFF4;LDA @13
3240 :HELPSTR7 CMP @32;BNE HELPSTR8;CMP ZP;BEQ HELPSTR9;LDA @32;STA ZP
3250 LDA@17;JSR #FFF4;PLA;PHA;JSR #FFF4;LDA @32;BNE HELPSTR9
3260 :HELPSTR8 CMP @CH"`";BNE HELPSTR9;LDA @17;JSR #FFF4;LDA @14;JSR #FFF4
3270 LDA @0;STA ZP;BNE HELPSTR5
3280 :HELPSTR9 JSR #FFF4;JMP HELPSTR5
3290 :HELPSTR6 JMP HELPEND
3300
3310 :POWERDOWN JSR #C4E4;LDX @#00
3320 :LGOUT1 LDA LGTXT,X;STA #100,X;INX;CMP @#0D;BNE LGOUT1
3330 JSR #FFF7;JSR #F7D1
3340 .AS "Geheugen weggeschreven van #300 t/m #9FFF in de file MEMORY.PD"
3350 .BY #0D,#0A,#EA
3360 JMP #C55B
3370 :LGTXT .AS "SAVE MEMORY.PD 300 A000",#0D
3380
3390 :FILECNV \ FILE CONVERSIE ATOM <-> MSDOS
3400 LDX @#01;JSR #F291;STA #140;LDY #03
3410 :FILECNV1 LDA (#05),Y;CMP @CH" ";BEQ FILECNV2;STA #140,X;INX
3420 INY;INC #03;BNE FILECNV1
3430 :FILECNV2 LDA @#0D;STA #140,X;LDX @#01;JSR #F291;STA #160;LDY #03
3440 :FILECNV3 LDA (#05),Y;CMP @CH" ";BEQ FILECNV4;STA #160,X;INX
3450 INY;INC #03;BNE FILECNV3
3460 :FILECNV4 LDA @#0D;STA #160,X;LDX @#00
3470 :FILECMP LDA #140,X;CMP #160,X;BNE FILECMP1;INX;CMP @#0D;BNE FILECMP
3480 LDX @118;LDA @#0C;JMP OSBYTE
3490 :FILECMP1 JSR #F291;CMP @CH"H";BEQ FILECNV5
3500 :FILECNVERR JMP SYNERR
3510 :FILECNV5 JSR #F291;CMP @CH"-";BEQ DELHEADER;CMP @CH"+";BEQ ADDHEADER
3520 BNE FILECNVERR
3530 :DELHEADER JSR FILESOPEN;INC #03
3540 :FILECOPY LDY ZP+2;JSR #FFD4;BCS ENDCOPY;LDY ZP+3;JSR #FFD1;JMP FILECOPY
3550 :ENDCOPY JSR #FFCB;LDY ZP+3;JSR #FFCB;DEC #03;JSR STACK;JMP #C558
3560
3570 :ADDHEADER LDA @#00;STA #16;LDA @#29;STA #25;LDA @#44;STA #17
3580 LDA @#F1;STA #26;JSR #F291;CMP @#0D;BEQ ADD1;CMP @CH";";BEQ ADD1
3590 DEC #03;JSR #C78B;JSR #C78B;INC #03
3600 :ADD1 JSR FILESOPEN;LDY ZP+3;LDA #16;JSR #FFD1;LDA #25;JSR #FFD1
3610 LDA #17;JSR #FFD1;LDA #26;JSR #FFD1;LDX @12;LDA @#00
3620 :ADD2 JSR #FFD1;DEX;BNE ADD2;LDY ZP+2;JSR MOVPTR;JMP FILECOPY
3630
3640 :FILESOPEN SEC;LDA @#40;JSR OPEN;BNE FILES2
3650 LDX @49;LDA @#0C;JMP OSBYTE
3660 :FILES2;STA ZP+2;CLC;LDA @#60;JSR OPEN;BNE FILES4
3670 LDY ZP+2;JSR #FFCB;LDX @52;LDA @#0C;JMP OSBYTE
3680 :FILES4 STA ZP+3;LDY ZP+3;JSR MOVPTR;RTS
3690 :OPEN STA ZP;LDA @#01;STA ZP+1;LDX @ZP;JSR #FFCE
3700 CMP @#00;RTS
3710
3720 :MOVPTR LDA @<-16;STA ZP+4;LDA @>-16
3730 STA ZP+5;STA ZP+6;STA ZP+7;LDX @ZP+4;JSR #FFD7;RTS
3740
3750 :OSCLI LDA #208;STA ZP;LDA #209;STA ZP+1
3760 LDA @<OSCLIVEC;STA #208;LDA @>OSCLIVEC;STA #209;LDA @#00;STA ZP+2
3770 PLA;PLA;JMP #C334
3780 :OSCLIVEC PHP;STX ZP+3;LDX ZP+2;STA #140,X;CPX @#40;BCS P+3
3790 INX;STX ZP+2;LDX ZP+3;CMP @#0D;BEQ OSCLI_EXEC;PLP;RTS
3800 :OSCLI_EXEC PLA;LDA ZP;STA #208;LDA ZP+1;STA #209;LDX @#00
3810 :OSCLI1 LDA #140,X;STA #100,X;INX;CMP @#0D;BNE OSCLI1;JSR #FFF7
3820 LDY #06;DEY;BEQ P+5;JMP #C558;JMP #C2CF
3830
3840 :KETTING \ CHAIN STATEMENT
3850 JSR #CEFA;DEY;STY #56;JSR #FFE0;JMP #F144
3860
3870 :FONTINIT
3880 LDA @#00;JSR ZENDBYTE;LDA @#06;JSR ZENDBYTE
3890 :FONT1 JSR #F291;CMP @CH";";BEQ ENDFONT;CMP @13;BEQ ENDFONT
3900 JSR ZENDBYTE;JMP FONT1
3910 :ENDFONT LDA @#00;JSR ZENDBYTE;DEC #03;JSR LEESBYTE;BNE ENDFONT1
3920 :RESETSEM LDA @10;JMP OSBYTE
3930 :ENDFONT1 JSR RESETSEM;LDA @12;LDX @1;JMP OSBYTE
3940
3950 :TXMOD JSR #F291;CMP @CH"/";BEQ TXMOD3;LDY @#00;STY ZP
3960 :TXMOD1 DEC #03;LDA @#03;LDX @80;JSR OSBYTE
3970 LDA @#0B;JSR OSBYTE;BCC P-3;LDA @#32;JSR COMMANDO;LDA @#03
3980 JSR ZENDBYTE;LDY ZP;BEQ TXMOD2
3990 :TXMOD4 TYA;JSR COMMANDO;CPY @#55;BEQ TXMOD2
4000 LDA @#27;JSR COMMANDO;JSR LEESBYTE;JSR LEESBYTE
4010 LDX @#00;CPY @#56;BNE P+4;LDX @#01;AND @#30
4020 LDY TXMOD5,X;CMP @#10;BNE P+5;LDY TXMOD5+2,X
4030 LDA @#35;JSR COMMANDO;LDA @#00;JSR ZENDBYTE;TYA;JSR ZENDBYTE
4040 LDA @79;JSR ZENDBYTE;LDA @0;JSR ZENDBYTE;LDA @16;JSR #FFF4
4050 :TXMOD2 LDA @#0A;JSR OSBYTE;JMP #C558
4060 :TXMOD3 JSR #F291;CMP @CH"8";BEQ FONT8;CMP @CH"1";BEQ FONT14
4070 CMP @CH"F";BEQ FONTF;CMP @CH"C";BEQ FONTU;JMP ENDFONT1
4080 :FONT8 LDY @#57;STY ZP;JMP TXMOD4
4090 :FONT14 JSR #F291;CMP @CH"4";BNE FONT8-3;LDY @#56;STY ZP;JMP TXMOD4
4100 :FONTF JSR FONTINIT;LDY @#55;BNE TXMOD4
4110 :FONTU LDY @#55;STY ZP;JMP TXMOD4
4120 :TXMOD5 .BYTE #31,#1B,#2A,#18
4130
4140 :SAVWIN JSR LEESPAR5;JSR ZETSEM
4150 LDA @#58;JSR COMMANDO;LDX @#01
4160 :SAVWIN1 LDA #16,X;JSR ZENDBYTE;LDA #25,X;JSR ZENDBYTE
4170 INX;CPX @5;BNE SAVWIN1;LDA #16;JSR ZENDBYTE;JSR STACK
4180 JSR WISSEM;JMP #C55B
4190
4200 :WINGET JSR LEESPAR3;JSR ZETSEM
4210 LDA @#59;JSR COMMANDO;LDX @#01
4220 :WINGET1 LDA #16,X;JSR ZENDBYTE;LDA #25,X;JSR ZENDBYTE
4230 INX;CPX @3;BNE WINGET1;LDA #16;JSR ZENDBYTE;JSR STACK
4240 JSR WISSEM;JMP #C55B
4250
4260 :XERROR LDX @29;LDA @12;JMP OSBYTE
4270
4280 :XCIRCLE JSR #F291;LDX @0;CMP @CH"O";BEQ XCIRCLE1
4290 CMP @CH"F";BNE XERROR;INX
4300 :XCIRCLE1 STX ZP;JSR #C231;JSR LEESPAR3;LDY @3
4310 :PCCOM5A JSR ZETSEM;LDA @#5A;JSR COMMANDO;LDA ZP;JSR ZENDBYTE;LDX @#00
4320 :PCCOM5A1 LDA #16,X;JSR ZENDBYTE;LDA #25,X;JSR ZENDBYTE
4330 INX;DEY;BNE PCCOM5A1;JSR WISSEM;JSR STACK;JMP #C55B
4340
4350 :XBLOCK JSR #F291;LDX @2;CMP @CH"O";BEQ XBLOCK1
4360 CMP @CH"F";BNE XERROR;INX
4370 :XBLOCK1 STX ZP;JSR #C231;JSR LEESPAR4;LDY @4;BNE PCCOM5A
4380
4390 :XTRIANGLE JSR #F291;LDX @4;CMP @CH"O";BEQ XTRIANGLE1
4400 CMP @CH"F";BNE XERROR;INX
4410 :XTRIANGLE1 STX ZP;JSR #C231;JSR LEESPAR6;LDY @6;BNE PCCOM5A
4420
4430 :XLINE JSR LEESPAR4;LDX @7;STX ZP;LDY @4;BNE PCCOM5A
4440
4450 :XSTYLE JSR LEESPAR1;LDX @6;STX ZP;LDY @1;BNE PCCOM5A
4460
4470 :ZERO LDA @#00;STA #321,X;STA #33C,X;STA #357,X;STA #372,X;RTS
4480
4490 :INT10 JSR ZETSEM;LDA @#1F;JSR COMMANDO;LDX @0
4500 :INT101 LDA ZP,X;JSR ZENDBYTE;INX;CPX @8;BNE INT101;LDX @0
4510 :INT102 JSR LEESBYTE;STA ZP,X;INX;CPX @8;BNE INT102
4520 JSR WISSEM;RTS
4530
4540 :VIDEO JSR #C4E4;LDX @1;LDY @0
4550 :VIDEO1 LDA #321,X;STA ZP,Y;LDA #33C,X;STA ZP+1,Y
4560 INY;INY;INX;CPX @5;BNE VIDEO1;JSR INT10;JMP #C55B
4570
4580 :XPALET JSR LEESPAR2;LDA #16;STA ZP+2;LDA #17;STA ZP+3
4590 LDA @#00;STA ZP;LDA @#10;STA ZP+1;JSR INT10;JSR STACK;JMP #C55B
4600
4610 :XPAINT JSR #F291;PHA;JSR #C231;PLA;CMP @CH"P";BEQ PAINTP;CMP @CH"C";BEQ PAINTC
4620 CMP @CH"D";BEQ PAINTD;CMP @CH"L";BEQ PAINTL
4630 CMP @CH"S";BNE P+5;JMP PAINTS;JMP XERROR
4640 :PAINTP JSR LEESPAR4;JSR ZETSEM;LDA @#5F;JSR COMMANDO
4650 LDA #19;JSR ZENDBYTE;LDA #16;JSR ZENDBYTE;LDA #25;JSR ZENDBYTE
4660 LDA #17;JSR ZENDBYTE;LDA #26;JSR ZENDBYTE;LDA #18;JSR ZENDBYTE
4670 JSR WISSEM;JSR STACK;JMP #C55B
4680
4690 :PAINTC JSR LEESPAR3;LDA @#00;STA #19;JMP PAINTP+3
4700
4710 :PAINTD JSR LEESPAR2;JSR ZETSEM;LDA @#5F;JSR COMMANDO
4720 LDA @#FF;JSR ZENDBYTE;LDA #16;JSR ZENDBYTE;LDY @#00
4730 LDA #17;STA ZP;LDA #26;STA ZP+1
4740 :PAINTD1 LDA (ZP),Y;JSR ZENDBYTE;INY;BNE PAINTD1
4750 JSR WISSEM;JSR STACK;JMP #C55B
4760
4770 :PAINTL LDX @#FD;JSR PAINTLS;JSR LEESBYTE;PHP;JSR WISSEM;PLP
4780 BEQ PAINTL3;CMP @2;BNE PAINTL2;LDX @1;BNE PAINTL4
4790 :PAINTL2 CLC;ADC @47;TAX
4800 :PAINTL4 LDA @#0C;JMP OSBYTE
4810 :PAINTL3 JMP #C55B
4820
4830 :PAINTS LDX @#FE;JMP PAINTL+2
4840
4850 :PAINTLS STX ZP;JSR ZETSEM;LDA @#5F;JSR COMMANDO
4860 LDA ZP;JSR ZENDBYTE
4870 :PAINTLS1 JSR #F291;CMP @13;BEQ PAINTLS2;CMP @CH";";BEQ PAINTLS2
4880 JSR ZENDBYTE;JMP PAINTLS1
4890 :PAINTLS2 LDA @#00;JSR ZENDBYTE;RTS
4900
4910 \ TEKEN KADER, GEBRUIKT DOOR KADER EN PDMENU
4920 :LOCATE
4930 PHA;TYA;PHA;LDA @30;JSR WRITE
4940 LDY #16;:LOCATE1 BEQ LOCATE2;LDA @9;JSR WRITE;DEY;JMP LOCATE1
4950 :LOCATE2
4960 LDY #19;:LOCATE3 BEQ LOCATE4;LDA @10;JSR WRITE;DEY;JMP LOCATE3
4970 :LOCATE4 PLA;TAY;PLA;RTS
4980
4990 :TEKADER
5000 DEC #18
5010 LDA #19
5020 PHA
5030 LDX ZP+1
5040 JSR LOCATE
5050 LDA KARTAB,X ; JSR WRITE
5060 LDY #16
5070 LDA KARTAB+2,X
5080 :KADERLUS1
5090 JSR WRITE
5100 INY
5110 CPY #18
5120 BNE KADERLUS1
5130 LDA KARTAB+4,X
5140 JSR WRITE
5150 :KADERLUS2
5160 INC #19
5170 LDA #19
5180 CMP #17
5190 BEQ BOTTOM
5200 JSR LOCATE
5210 LDA KARTAB+6,X ; JSR WRITE
5220 LDY #16
5230 LDA @#20
5240 :KADERLUS3
5250 JSR WRITE
5260 INY
5270 CPY #18
5280 BNE KADERLUS3
5290 LDA KARTAB+6,X ; JSR WRITE
5300 JMP KADERLUS2
5310 :BOTTOM
5320 JSR LOCATE
5330 LDA KARTAB+8,X ; JSR WRITE
5340 LDY #16
5350 LDA KARTAB+2,X
5360 :KADERLUS4
5370 JSR WRITE
5380 INY
5390 CPY #18
5400 BNE KADERLUS4
5410 LDA KARTAB+10,X ; JSR WRITE
5420 INC #16
5430 PLA
5440 STA #19
5450 INC #19
5460 JMP LOCATE
5470
5480 :KARTAB
5490 .BYTE 201,218,205,196,187,191
5500 .BYTE 186,179,200,192,188,217
5510
5520 :LEESPAR
5530 JSR #C78B
5540 JSR #C231
5550 JSR #C78B
5560 JSR #C231
5570 JSR #C78B
5580 JSR #C231
5590 JSR #C78B
5600 JSR #C231
5610 JSR #F291
5620 AND @#01
5630 STA ZP+1
5640 JSR #C231
5650 JSR #C78B
5660 JSR #C231
5670 JSR #F291
5680 CMP @CH"$"
5690 BEQ P+5
5700 JMP XERROR
5710 JSR #C78B
5720 JSR #C231
5730 JMP #F291
5740
5750 :PDMENU
5760 JSR LEESPAR
5765 STA #1C;INC #04
5770 LDA #17;CLC;ADC #19;ADC @1;PHA
5780 LDA #16;CLC;ADC #18;ADC @1;PHA
5790 LDA #17;STA #19;PLA;STA #18;PLA;STA #17
5820 LDA @11;JSR OSBYTE;BCC P-3
5822 LDA @#5A;JSR COMMANDO;LDA @#08;JSR ZENDBYTE;JSR LEESBYTE;PHA
5830 LDA @17;JSR #FFF4;LDA #1A;JSR #FFF4
5840 JSR TEKADER
5850 JSR MOUSE_INIT;JSR MENU
5855 LDA @17;JSR #FFF4;PLA;JSR #FFF4
5860 LDA @10;JSR OSBYTE
5870 LDA #1C;SEC;SBC @CH"@";CMP @CH"Z"+1;BMI PDMENU1
5880 LDA @#0C;LDX @138;JMP OSBYTE
5890 :PDMENU1 TAX;JSR ZERO;TYA;STA #321,X
5900 JSR STACK;JMP #C558
5910
5920 :MENU LDA #1B;STA ZP+2;LDA #2A;STA ZP+3 \ ZET POINTER NAAR TEKST
5930 LDA #18;SEC;SBC #16;STA ZP \ BEREKEN BREEDTE
5940 LDA #17;SEC;SBC #19;SBC @1;STA ZP+6 \ BEREKEN AANTAL ITEMS
5945 JSR #F291;DEC #03;CMP @CH",";BNE MENUDEF
5947 JSR #C231;JSR #C78B;LDX #1D;DEX;STX ZP+4;LDX @0;BEQ MENU0
5950 :MENUDEF LDX @0;STX ZP+4 \ RESET POINTER NAAR REGEL
5960 :MENU0 LDA #19;PHA;LDY @0
5970 :MENULUSY LDA @17;JSR #FFF4;LDA #1A;JSR #FFF4
5980 CPX ZP+4;BNE MENU1
5990 LDA @17;JSR #FFF4;LDA #1A;AND @#0F;ASL A;ASL A;ASL A;ASL A
6000 STA ZP+5;LDA #1A;AND @#F0;LSR A;LSR A;LSR A;LSR A
6010 ORA ZP+5;JSR #FFF4 \ INVERTEER KLEUR
6020 :MENU1 JSR LOCATE;LDA ZP;PHA
6030 :MENU2 LDA (ZP+2),Y;JSR #FFF4;INY;DEC ZP;BPL MENU2;PLA;STA ZP
6040 INC #19;INX;LDA @13;CMP (ZP+2),Y;BNE MENULUSY
6050 PLA;STA #19;JSR MOUSESCAN
6060 :MENU_KEY LDY @#01;JSR KEYSCAN;BCS MENU_KEY_PRESSED
6070 JSR MOUSESCAN;BCC MENU_KEY;LDA @#19;JSR COMMANDO
6080 LDA @#00;JSR ZENDBYTE;LDA @4;JSR ZENDBYTE;JMP MENU_KEY_PRESSED+5
6090
6100 :MENU_KEY_PRESSED LDY @#00;JSR KEYSCAN
6110 CPX @0;BEQ MENU_UPDN;CPX @27;BEQ MENU_ESC;CPX @13;BEQ MENU_SEL
6120 JMP MENU_KEY
6130 :MENU_ESC LDY @0;RTS
6140 :MENU_SEL LDY ZP+4;INY;RTS
6150 :MENU_UPDN CPY @#48;BEQ MENU_UP
6160 CPY @#50;BEQ MENU_DN;JMP MENU0
6170 :MENU_UP LDA ZP+4;CMP @0;BNE MENU_UP1;LDA ZP+6;STA ZP+4;JMP MENU0
6180 :MENU_UP1 DEC ZP+4;JMP MENU0
6190 :MENU_DN LDA ZP+4;CMP ZP+6;BNE MENU_DN1;LDA @0;STA ZP+4;JMP MENU0
6200 :MENU_DN1 INC ZP+4;JMP MENU0
6201
6202 :KEYSCAN LDA @#3A;JSR COMMANDO;JSR ZENDBYTE;TYA
6203 JSR ZENDBYTE;LDY @#00
6204 :KEYSCAN1 JSR ZENDBYTE;INY;CPY @6;BNE KEYSCAN1
6206 JSR LEESBYTE;TAX;JSR LEESBYTE;TAY;JSR LEESBYTE;JSR LEESBYTE
6208 JSR LEESBYTE;JSR LEESBYTE;JSR LEESBYTE;JSR LEESBYTE;LSR A;RTS
6210
6212 :MOUSE_INIT LDA @#1C;JSR COMMANDO;LDA @#00;LDX @8
6213 :MOUSE_INIT1 JSR ZENDBYTE;DEX;BNE MOUSE_INIT1
6214 JSR LEESBYTE;STA ZP+7;JSR LEESBYTE;ORA ZP+7;STA ZP+7
6215 :MOUSE_INIT2 JSR LEESBYTE;INX;CPX @6;BNE MOUSE_INIT2
6216 RTS
6217
6218 :MOUSESCAN LDA ZP+7;BNE MOUSESCAN1;CLC;RTS
6220 :MOUSESCAN1 LDA @#26;JSR COMMANDO
6230 JSR LEESBYTE;JSR LEESBYTE;TAY;JSR LEESBYTE;TAX
6240 CPX @1;BEQ MOUSELEFT;CPX @2;BEQ MOUSERIGHT
6250 CPY @#FE;BCS MOUSEUP;CPY @#01;BCS MOUSEDOWN;CLC;RTS
6260 :MOUSELEFT LDX @13;LDY @00;JMP MOUSEND
6270 :MOUSERIGHT LDX @27;LDY @00;JMP MOUSEND
6280 :MOUSEUP LDX @00;LDY @#48;JMP MOUSEND
6290 :MOUSEDOWN LDX @00;LDY @#50;JMP MOUSEND
6295 :MOUSEND SEC;RTS
6300
6310 :SCOPY JSR #F291;LDX @0;CMP @CH"C";BEQ SCOPY_C;CMP @CH"L";BEQ SCOPY_L
6320 CMP @CH"S";BEQ SCOPY_S
6330 LDA @12;LDX @135;JMP OSBYTE
6340 :SCOPY_L INX
6350 :SCOPY_S INX
6360 :SCOPY_C STX ZP;JSR #C231;JSR LEESPAR2;LDX ZP
6370 JSR ZETSEM;LDA @#5C;JSR COMMANDO;TXA;JSR ZENDBYTE
6380 LDA #16;JSR ZENDBYTE;LDA #17;JSR ZENDBYTE;JSR WISSEM
6390 JSR STACK;JMP #C55B
6400
6410 :RPUT JSR LEESPAR3;SEC;LDA@#00;SBC#18;LDA@#40;SBC#27;BCS RPUT1
6415 :RPUT0 LDA @#0C;LDX@109;JMP OSBYTE
6420 :RPUT1 JSR ZETSEM;LDA @#61;JSR COMMANDO
6430 LDA @1;JSR ZENDBYTE;LDA #16;JSR ZENDBYTE;LDA #18;STA ZP;JSR ZENDBYTE
6440 LDA #27;STA ZP+1;JSR ZENDBYTE;LDA #17;STA ZP+2;LDA #26;STA ZP+3;LDY @0
6450 :RPUT2 LDA ZP;ORA ZP+1;BEQ RPUT3;LDA (ZP+2),Y;JSR ZENDBYTE
6455 INC ZP+2;BNE P+4;INC ZP+3
6460 DEC ZP;LDA ZP;CMP @#FF;BNE RPUT2;DEC ZP+1;JMP RPUT2
6470 :RPUT3 JSR LEESBYTE;BEQ RPUT4;JSR WISSEM;CLC;ADC@47;TAX;LDA@12;JMP OSBYTE
6480 :RPUT4 JSR LEESBYTE;STA ZP;JSR LEESBYTE;STA ZP+1;JSR WISSEM
6490 JSR STACK;JMP #C55B
6500
6510 :RGET JSR LEESPAR3;SEC;LDA@#00;SBC#18;LDA@#40;SBC#27;BCS RGET0;JMP RPUT0
6515 :RGET0 JSR ZETSEM;LDA @#61;JSR COMMANDO
6520 LDA @0;JSR ZENDBYTE;LDA #16;JSR ZENDBYTE;LDA #18;JSR ZENDBYTE
6530 LDA #27;JSR ZENDBYTE;LDA #17;STA ZP+2;LDA #26;STA ZP+3;LDY @0
6533 :RGET3 JSR LEESBYTE;BEQ RGET4;JSR WISSEM;CLC;ADC@47;TAX;LDA@12;JMP OSBYTE
6536 :RGET4 JSR LEESBYTE;STA ZP;PHA;JSR LEESBYTE;STA ZP+1;PHA
6540 :RGET2 LDA ZP;ORA ZP+1;BEQ RGET1;JSR LEESBYTE;STA (ZP+2),Y
6545 INC ZP+2;BNE P+4;INC ZP+3
6550 DEC ZP;LDA ZP;CMP @#FF;BNE RGET2;DEC ZP+1;JMP RGET2
6580 :RGET1 PLA;STA ZP+1;PLA;STA ZP;JSR WISSEM;JSR STACK;JMP #C55B
6590
6600 .END
6610 RETURN
|