100 ;ERWEITERUNG.SRC 110 ; 120 *=49152 130 &=* 140 ; 150 ZP1=$FB ;POINTER ZEROPAGE 160 ZP2=$FD ;VON 252 BIS 255 170 ; 180 BSCH =$0400 190 BUFFER =$C400; BILD 200 CHROUT =$FFD2; AUSGABE 1 ZEICHEN 210 ; 220 PA=56576 ; USERPORT A 230 PB=56577 ; USERPORT B 240 D1=56578 ; DATENRICHT. PORT A 250 D2=56579 ; DATENRICHT. PORT B 260 ; 270 DAP1=830 ; 8255 PORT A 280 DAP2=831 ; 8255 PORT B 290 DAP3=832 ; 8255 PORT C 300 ; 310 ; 320 JMP DEMO ; TESTPROGRAMM 330 JMP RESETOUT ; RESET FUER AUSGABE 340 JMP AUSGABE ; AUSGABE DAP1-DAP3 350 JMP RESETIN ; RESET FUER EINGABE 360 JMP EINGABE ; 8255 IN DAP1-DAP3 370 JMP FARBE ; AUSGABE MUSTER 380 JMP BSCHLOAD ; BILDSCHIRM AUFBAUEN 390 ; 400 RESET ;RESET ALLGEMEIN 410 SEI ;IRQ VERHINDERN 420 LDA D1 ;PORTA, PA2=AUSGABE 430 ORA #4 440 STA D1 450 ; 460 LDA #255 ;PORTB=AUSGABE 470 STA D2 480 ; 490 LDA PA 500 PHA ;PORTA MERKEN 510 ORA #%00000100 520 STA PA ;WAEHLT4042 530 LDA #%00001110;NEXT DATA FUER 8255 540 STA PB ;IST STEUERBEFEHL 550 LDA PA 560 AND #%11111011 570 STA PA ;WAEHLT 8255 580 ; 590 ; 600 LDA BTR ;STEUERBEFEHL FUER 610 ORA #%10000000; 8255 620 STA PB 630 ; 640 LDA #0 ;PORTB=EINGABE 650 STA D2 660 PLA ;PORTA 670 STA PA ;ALTER WERT 680 CLI 690 RTS 700 ; 710 FLAG. 0 720 BTR .%00000000;STEUERBEFEHL 730 LOGIKO ;AUSGABEBEFEHLE 740 .%00000010,%00000110,%00001010 750 ; 760 OUT ;AUSGABE 770 SEI 780 ; 790 LDX #0 ;SCHLEIFE =0 800 LDA #255 ;PORTB = AUSGABE 810 STA D2 820 LDA PA 830 PHA ;PORT A MERKEN 840 LOUT1 ;BEGINN SCHLEIFE 850 LDA PA 860 ORA #%00000100 870 STA PA ;WAEHLT 4042 880 LDA LOGIKO,X ;DATEN SIND AUSGABEN 890 STA PB ; FUER 8255 900 LDA PA 910 AND #%11111011 920 STA PA ;WAEHLT 8255 930 LDA DAP1,X ;DATEN AN 8255 940 STA PB 950 INX 960 CPX #3 970 BNE LOUT1 ;SCHLEIFENENDE 980 LDA #0 990 STA D2 ;PB = EINGABE 1000 PLA 1010 STA PA ;PA = ALTER WERT 1020 CLI 1030 RTS ;ENDE OUT 1040 ; 1050 BSCHLOAD ;HOLT BILDSCHIRM 1060 LDA #11 1070 STA 53280 1080 STA 53281 1090 LDA #"[144]" 1100 JSR CHROUT 1110 LDA #"[147]" 1120 JSR CHROUT 1130 ; 1140 LDA #BSCH 1160 STA ZP1 1170 STX ZP1+1 1180 LDA #BUFFER 1200 STA ZP2 1210 STX ZP2+1 1220 ; 1230 LDX #3 1240 LDY #0 1250 BSLO1 1260 LDA (ZP2),Y 1270 STA (ZP1),Y 1280 INY 1290 BNE BSLO1 1300 INC ZP1+1 1310 INC ZP2+1 1320 DEX 1330 BNE BSLO1 1340 RTS 1350 ; 1360 TBS ."QWERTYUIOP@*ASDFGHJKL:;=" 1370 TBR ./QWERTYUIOP@*ASDFGHJKL:;=/ 1380 TBZ .'QWERTYUIOP@*ASDFGHJKL:;=' 1390 TPOSL.<321,<324,<327,<330,<333 1400 .<336,<339,<342,<348,<351,<354 1410 .<357,<522,<525,<528,<531,<534 1420 .<537,<540,<543,<546,<549,<552 1430 .<555 1440 ; 1450 TPOSH.>321,>324,>327,>330,>333 1460 .>336,>339,>342,>348,>351,>354 1470 .>357,>522,>525,>528,>531,>534 1480 .>537,>540,>543,>546,>549,>552 1490 .>555 1500 ; 1510 TBYTE .1,1,1,1,1,2,2,2,0,0,0,0 1520 .1,1,1,2,2,2,2,2,0,0,0,0 1530 TBIT .8,16,32,64,128,2,16,64 1540 .1,2,4,16,4,2,1,8,4,1,32,128 1550 .128,64,32,8 1560 ZEICHEN .0,0 1570 TE1. / DATEN LESEN (C)M&T/ 1580 TE2. / DATEN AUSGEBEN (C)M&T / 1590 TEA. /FEHLER ! PORT IST EINGABE/ 1600 ; 1610 DEMO ;EINSPRUNG TESTPRG 1620 LDA #1 1630 STA FLAG 1640 LDA #87 1650 STA ZEICHEN 1660 LDA #81 1670 STA ZEICHEN+1 1680 LDA #0 1690 STA BTR 1700 JSR RESET 1710 JSR BSCHLOAD 1720 LDX #0 1730 TEL2 1740 LDA TE2,X 1750 STA BSCH,X 1760 INX 1770 CPX #40 1780 BNE TEL2 1790 ; 1800 LDA #0 1810 BSET0 1820 STA DAP1 1830 STA DAP2 1840 STA DAP3 1850 CHANGE 1860 JSR FARBE 1870 BSET2 1880 JSR OUT 1890 BSET1 1900 LDA #0 1910 STA 198 1920 TAL 1930 LDA 198 1940 BEQ TAL 1950 ; 1960 LDA #0 1970 STA 198 1980 LDA 631 1990 SEC 2000 CMP #3 2010 BNE SKIP1 2020 LDA #"[147]" 2030 JMP CHROUT 2040 RTS 2050 SKIP1 2060 SEC 2070 CMP #"" 2080 BNE SKIP2 2090 LDA #0 2100 JMP BSET0 2110 SKIP2 2120 SEC 2130 CMP #32 2140 BNE SKIP3 2150 LDX #0 2160 CHAL1 2170 LDA DAP1,X 2180 EOR #255 2190 STA DAP1,X 2200 INX 2210 CPX #3 2220 BNE CHAL1 2230 JMP CHANGE 2240 SKIP3 2250 SEC 2260 CMP #"[133]" 2270 BNE SKIP4 2280 JMP EINTEST 2290 ; 2300 SKIP4 2310 ; 2320 LDX #0 2330 BSWERT 2340 SEC 2350 CMP TBS,X 2360 BEQ BSETOUT 2370 INX 2380 CPX #24 2390 BNE BSWERT 2400 BEQ BSET1 2410 ; 2420 BSETOUT 2430 LDA TBYTE,X 2440 TAY 2450 LDA DAP1,Y 2460 EOR TBIT,X 2470 STA DAP1,Y 2480 JSR FARBSET 2490 JMP BSET2 2500 ; 2510 FARBSET 2520 LDA #BSCH 2550 STA ZP1+1 2560 LDA TPOSL,X 2570 CLC 2580 ADC ZP1 2590 STA ZP1 2600 BCC BSL1 2610 INC ZP1+1 2620 BSL1 2630 LDA TPOSH,X 2640 CLC 2650 ADC ZP1+1 2660 STA ZP1+1 2670 ; 2680 LDA ZP1 2690 STA ZP2 2700 LDA ZP1+1 2710 CLC 2720 ADC #$D4 2730 STA ZP2+1 2740 ; 2750 LDA TBYTE,X 2760 TAY 2770 LDA DAP1,Y 2780 AND TBIT,X 2790 BNE GESETZT 2800 LDY #0 2810 LDA ZEICHEN 2820 STA (ZP1),Y 2830 LDA #5 2840 STA (ZP2),Y 2850 LDA FLAG 2860 BEQ QUIT1 2870 INY 2880 LDA TBZ,X 2890 STA (ZP1),Y 2900 LDA #13 2910 STA (ZP2),Y 2920 QUIT1 2930 RTS 2940 ; 2950 GESETZT 2960 LDY #0 2970 LDA ZEICHEN+1 2980 STA (ZP1),Y 2990 LDA #26 3000 STA (ZP2),Y 3010 LDA FLAG 3020 BEQ QUIT1 3030 INY 3040 LDA TBR,X 3050 STA (ZP1),Y 3060 LDA #1 3070 STA (ZP2),Y 3080 RTS 3090 ; 3100 FARBE ;EINSPRUNG BELEGUNG 3110 LDX #0 3120 FAL1 3130 JSR FARBSET 3140 INX 3150 CPX #24 3160 BNE FAL1 3170 RTS 3180 ; 3190 LOGIKI ;EINGABEBEFEHLE 3200 .%00000001,%00000101,%00001001 3210 ; 3220 IN ;EINSPRUNG EINGABE 3230 SEI 3240 ; 3250 LDX #0 3260 LDA PA 3270 PHA ;PA MERKEN 3280 LIN1 ;BEGINN SCHLEIFE 3290 LDA PA 3300 ORA #%00000100 ;SCHALTET AUF 4042 3310 STA PA 3320 LDA #255 3330 STA D2 ;PB=AUSGABE 3340 LDA LOGIKI,X ;DATA IST EINGABE 3350 STA PB ;FUER 8255 3360 LDA PA 3370 AND #%11111011 3380 STA PA ;SCHALTET AUF 8255 3390 LDA #0 3400 STA D2 ;PB = EINGABE 3410 LDA PB ;WERT VON PB 3420 STA DAP1,X ;AUF DAP1-DAP3 3430 INX 3440 CPX #3 3450 BNE LIN1 ;ENDE SCHLEIFE 3460 PLA 3470 STA PA ;PA = ALTER WERT 3480 CLI 3490 RTS 3500 ; 3510 EINTEST ; EINSPRUNG 3520 JSR BSCHLOAD ;EINGABETEST 3530 LDX #0 3540 TEL1 3550 LDA TE1,X 3560 STA BSCH,X 3570 INX 3580 CPX #40 3590 BNE TEL1 3600 ; 3610 LDA #%00011011 ;STEUERBEFEHL 8255 3620 STA BTR ;ALLE PORTS EINGABE 3630 JSR RESET 3640 LDA #100 3650 STA ZEICHEN 3660 LDA #234 3670 STA ZEICHEN+1 3680 ; 3690 LDA #0 3700 STA 198 3710 ; 3720 TAL1 3730 LDA 198 3740 BEQ TAL2 3750 ; 3760 LDA #0 3770 STA 198 3780 LDA 631 3790 SEC 3800 CMP #3 3810 BNE TAL3 3820 LDA #"[147]" 3830 JMP CHROUT 3840 RTS 3850 ; 3860 TAL3 3870 SEC 3880 CMP #"[133]" 3890 BNE TAL1 3900 ; 3910 JMP DEMO 3920 ; 3930 TAL2 3940 JSR IN 3950 JSR FARBE 3960 JMP TAL1 3970 ; 3980 ; 3990 RESETOUT ;EINSPRUNG RESET 4000 LDA #0 ;FUER AUSGABE 4010 STA FLAG 4020 LDA #87 4030 STA ZEICHEN 4040 LDA #81 4050 STA ZEICHEN+1 4060 LDA #0 ;STEUERBEFEHL 8255 4070 STA BTR ;ALLE PORTS=AUSGABE 4080 STA DAP1 ;HILFSREGISTER 1=0 4090 STA DAP2 ; 2=0 4100 STA DAP3 ; 3=0 4110 JMP RESET 4120 ; 4130 RESETIN ;EINSPR.RESET EING. 4140 LDA #0 4150 STA FLAG 4160 LDA #%00011011;8255 ALLE PORTS 4170 STA BTR ;EINGABE 4180 JSR RESET 4190 LDA #100 4200 STA ZEICHEN 4210 LDA #234 4220 STA ZEICHEN+1 4230 JSR RESET 4240 JMP IN 4250 ; 4260 AUSG1 4270 JMP OUT 4280 ; 4290 AUSGABE ;EINSPRUNG AUSGABE 4300 LDA BTR ;FALLS BTR <>0 4310 BEQ AUSG1 4320 ; 4330 LDX #22 ;TYPE MISMATCH ERROR 4340 JMP $A43A ;AUSGEBEN 4350 ; 4360 EING1 4370 JMP IN 4380 ; 4390 EINGABE ;EINSPRUNG EINGABE 4400 LDA BTR ;FALLS BTR <>0 4410 BNE EING1 4420 ; 4430 LDX #22 ;TYPE MISMATCH ERROR 4440 JMP $A43A ;AUSGEBEN