home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 67
/
64er_Magazin_Sonderheft_67_19xx_Markt__Technik_de_Side_A.d64
/
eisenbahn.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
2KB
|
111 lines
100 ;irq/port.src
110 ;
120 *=$c000
130 &=*
140 ;
150 ;
160 pa=56576 ; userport a
170 pb=56577 ; userport b
180 d1=56578 ; datenricht. port a
190 d2=56579 ; datenricht. port b
200 ;
210 dap1=830 ; 8255 port a/out
220 dap2=831 ; 8255 port c/out
230 dap3=832 ; 8255 port b/in
240 ;
250 ;
260 jmp reset
270 jmp out
280 ;
290 ;
300 reset ;reset allgemein
310 lda #%10000010;steuerbefehl 8255
320 sta btr ;port a/c=out b=in
330 lda #0
340 sta dap1 ;hilfsregister a=0
350 sta dap2 ; c=0
360 ;
370 sei ;irq verhindern
380 lda d1 ;porta, pa2=ausgabe
390 ora #4
400 sta d1
410 ;
420 lda #255 ;portb=ausgabe
430 sta d2
440 ;
450 lda pa
460 pha ;porta merken
470 ora #%00000100
480 sta pa ;waehlt4042
490 lda #%00001110;next data fuer 8255
500 sta pb ;ist steuerbefehl
510 lda pa
520 and #%11111011
530 sta pa ;waehlt 8255
540 ;
550 ;
560 lda btr ;steuerbefehl fuer
570 ora #%10000000; 8255
580 sta pb
590 ;
600 lda #0 ;portb=eingabe
610 sta d2
620 pla ;porta
630 sta pa ;alter wert
640 lda #<out
650 ldx #>out
660 sta $0314
670 stx $0315
680 cli
690 rts
700 ;
710 btr .%00000000;steuerbefehl
720 ;
730 logiko ;ausgabebefehle
740 .%00000010,%00001010
750 ;
760 out ;ausgabe
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 #2
970 bne lout1 ;schleifenende
980 lda #0
990 sta d2 ;pb = eingabe
1000 ;
1010 in ;einsprung eingabe
1020 lda pa
1030 ora #%00000100 ;schaltet auf 4042
1040 sta pa
1050 lda #255
1060 sta d2 ;pb=ausgabe
1070 lda #%00000101 ;data eingabe/b
1080 sta pb ;fuer 8255
1090 lda pa
1100 and #%11111011
1110 sta pa ;schaltet auf 8255
1120 lda #0
1130 sta d2 ;pb = eingabe
1140 lda pb ;wert von pb
1150 sta dap3 ;auf dap3
1160 pla
1170 sta pa ;pa = alter wert
1190 jmp $ea31
1200 ;
1210 ende