> DETECTED: COMMODORE BASIC PROGRAM (LOAD ADDRESS $0801)
00000000: 01 08 20 4C 69 73 74 69 6E 67 20 33 3A 0D 0D 73 |.. Listing 3:..s|
00000010: 65 69 0D 6C 64 78 20 20 23 24 30 30 20 3B 45 72 |ei.ldx #$00 ;Er|
00000020: 73 74 65 6C 6C 65 6E 0D 3A 6D 61 6B 74 61 62 74 |stellen.:maktabt|
00000030: 78 61 20 3B 65 69 6E 65 72 0D 63 6C 63 20 3B 46 |xa ;einer.clc ;F|
00000040: 75 6E 6B 74 69 6F 6E 73 74 61 62 65 6C 6C 65 0D |unktionstabelle.|
00000050: 61 64 63 20 20 23 24 30 31 20 3B 66 81 72 0D 61 |adc #$01 ;f.r.a|
00000060: 6E 64 20 20 23 24 30 37 20 3B 64 69 65 0D 6F 72 |nd #$07 ;die.or|
00000070: 61 20 20 23 24 33 38 20 3B 53 70 65 69 63 68 65 |a #$38 ;Speiche|
00000080: 72 73 74 65 6C 6C 65 6E 0D 73 74 61 20 20 74 62 |rstellen.sta tb|
00000090: 31 31 2C 78 20 3B 24 64 30 31 31 20 75 6E 64 0D |11,x ;$d011 und.|
000000A0: 74 78 61 20 3B 24 64 30 31 38 0D 61 64 63 20 20 |txa ;$d018.adc |
000000B0: 23 24 30 31 0D 61 73 6C 0D 61 73 6C 0D 61 73 6C |#$01.asl.asl.asl|
000000C0: 0D 61 73 6C 0D 6F 72 61 20 20 23 24 30 38 0D 61 |.asl.ora #$08.a|
000000D0: 6E 64 20 20 23 24 37 66 0D 73 74 61 20 20 74 62 |nd #$7f.sta tb|
000000E0: 31 38 2C 78 0D 69 6E 78 0D 63 70 78 20 20 23 32 |18,x.inx.cpx #2|
000000F0: 30 30 20 3B 32 30 30 20 52 61 73 74 65 72 7A 65 |00 ;200 Rasterze|
00000100: 69 6C 65 6E 20 3F 0D 62 6E 65 20 20 6D 61 6B 74 |ilen ?.bne makt|
00000110: 61 62 0D 6C 64 61 20 20 23 24 37 30 20 3B 6C 65 |ab.lda #$70 ;le|
00000120: 74 7A 74 65 20 5A 65 69 6C 65 20 6B 65 69 6E 20 |tzte Zeile kein |
00000130: 44 4D 41 0D 73 74 61 20 20 74 62 31 31 2B 31 39 |DMA.sta tb11+19|
00000140: 39 20 3B 75 6E 64 20 52 65 73 74 7A 65 69 6C 65 |9 ;und Restzeile|
00000150: 6E 20 73 63 68 77 61 72 7A 0D 6C 64 61 20 20 23 |n schwarz.lda #|
00000160: 24 30 38 0D 73 74 61 20 20 74 62 31 38 2B 31 39 |$08.sta tb18+19|
00000170: 39 0D 6C 64 61 20 20 23 3C 6E 65 75 69 72 71 20 |9.lda #<neuirq |
00000180: 3B 49 52 51 2D 56 65 6B 74 6F 72 0D 6C 64 78 20 |;IRQ-Vektor.ldx |
00000190: 20 23 3E 6E 65 75 69 72 71 20 3B 76 65 72 62 69 | #>neuirq ;verbi|
000001A0: 65 67 65 6E 0D 73 74 61 20 20 24 30 33 31 34 0D |egen.sta $0314.|
000001B0: 73 74 78 20 20 24 30 33 31 35 0D 6C 64 61 20 20 |stx $0315.lda |
000001C0: 23 24 31 62 0D 73 74 61 20 20 24 64 30 31 31 20 |#$1b.sta $d011 |
000001D0: 3B 24 64 30 31 31 2D 69 6E 69 74 0D 6C 64 61 20 |;$d011-init.lda |
000001E0: 20 23 24 31 38 0D 73 74 61 20 20 24 64 30 31 36 | #$18.sta $d016|
000001F0: 20 3B 4D 43 2D 65 69 6E 0D 6C 64 61 20 20 23 24 | ;MC-ein.lda #$|
00000200: 30 30 0D 73 74 61 20 20 24 64 30 31 35 20 3B 53 |00.sta $d015 ;S|
00000210: 70 72 69 74 65 2D 52 65 67 69 73 74 65 72 20 6C |prite-Register l|
00000220: 94 73 63 68 65 6E 0D 73 74 61 20 20 24 64 30 32 |.schen.sta $d02|
00000230: 30 0D 73 74 61 20 20 24 64 30 32 31 0D 73 74 61 |0.sta $d021.sta|
00000240: 20 20 24 64 63 30 65 20 3B 54 69 6D 65 72 2D 53 | $dc0e ;Timer-S|
00000250: 74 6F 70 0D 6C 64 61 20 20 23 24 34 63 20 3B 6E |top.lda #$4c ;n|
00000260: 65 75 65 6E 20 54 69 6D 65 72 77 65 72 74 20 66 |euen Timerwert f|
00000270: 81 72 20 64 65 6E 0D 73 74 61 20 20 24 64 63 30 |.r den.sta $dc0|
00000280: 35 20 3B 65 72 73 74 65 6E 20 49 52 51 20 73 65 |5 ;ersten IRQ se|
00000290: 74 7A 65 6E 0D 6C 64 61 20 20 23 24 63 37 2D 36 |tzen.lda #$c7-6|
000002A0: 33 0D 73 74 61 20 20 24 64 63 30 34 0D 0D 3A 77 |3.sta $dc04..:w|
000002B0: 61 69 74 31 6C 64 61 20 20 24 64 30 31 31 20 3B |ait1lda $d011 ;|
000002C0: 61 75 66 20 5A 65 69 6C 65 20 24 30 33 30 20 77 |auf Zeile $030 w|
000002D0: 61 72 74 65 6E 0D 62 70 6C 20 20 77 61 69 74 31 |arten.bpl wait1|
000002E0: 0D 0D 3A 77 61 69 74 32 6C 64 61 20 20 24 64 30 |..:wait2lda $d0|
000002F0: 31 31 0D 62 6D 69 20 20 77 61 69 74 32 0D 0D 6C |11.bmi wait2..l|
00000300: 64 61 20 20 23 24 33 30 0D 3A 77 61 69 74 33 63 |da #$30.:wait3c|
00000310: 6D 70 20 20 24 64 30 31 32 0D 62 6E 65 20 20 77 |mp $d012.bne w|
00000320: 61 69 74 33 0D 0D 6C 64 78 20 20 23 24 31 31 20 |ait3..ldx #$11 |
00000330: 3B 53 79 6E 63 68 72 6F 6E 69 73 61 74 69 6F 6E |;Synchronisation|
00000340: 20 64 65 73 0D 6C 64 61 20 20 23 24 31 38 20 3B | des.lda #$18 ;|
00000350: 54 69 6D 65 72 73 20 61 75 66 20 69 6D 6D 65 72 |Timers auf immer|
00000360: 20 64 69 65 73 65 6C 62 65 0D 73 74 61 20 20 24 | dieselbe.sta $|
00000370: 64 30 31 31 20 3B 68 6F 72 69 7A 6F 6E 74 61 6C |d011 ;horizontal|
00000380: 65 20 50 6F 73 69 74 69 6F 6E 20 64 75 72 63 68 |e Position durch|
00000390: 0D 73 74 78 20 20 24 64 63 30 65 20 3B 44 4D 41 |.stx $dc0e ;DMA|
000003A0: 2D 5A 79 6B 6C 65 6E 2D 41 75 73 67 6C 65 69 63 |-Zyklen-Ausgleic|
000003B0: 68 0D 6C 64 61 20 20 23 24 33 62 0D 73 74 61 20 |h.lda #$3b.sta |
000003C0: 20 24 64 30 31 31 0D 6C 64 61 20 20 24 64 63 30 | $d011.lda $dc0|
000003D0: 64 20 3B 49 52 51 2D 46 6C 61 67 20 6C 94 73 63 |d ;IRQ-Flag l.sc|
000003E0: 68 65 6E 0D 6C 64 61 20 20 24 64 64 30 30 20 61 |hen.lda $dd00 a|
000003F0: 6E 64 20 20 23 24 66 63 0D 6F 72 61 20 20 23 24 |nd #$fc.ora #$|
00000400: 30 32 0D 73 74 61 20 20 24 64 64 30 30 20 3B 42 |02.sta $dd00 ;B|
00000410: 61 6E 6B 20 31 20 65 69 6E 0D 63 6C 69 0D 72 74 |ank 1 ein.cli.rt|
00000420: 73 0D 0D 3A 6E 65 75 69 72 71 6C 64 61 20 20 23 |s..:neuirqlda #|
00000430: 24 39 66 20 3B 4D 61 78 69 6D 61 6C 77 65 72 74 |$9f ;Maximalwert|
00000440: 20 64 65 72 20 76 65 72 67 61 6E 67 65 6E 65 6E | der vergangenen|
00000450: 0D 73 65 63 20 3B 5A 79 6B 6C 65 6E 20 76 65 72 |.sec ;Zyklen ver|
00000460: 67 6C 65 69 63 68 65 6E 0D 73 62 63 20 20 24 64 |gleichen.sbc $d|
00000470: 63 30 34 0D 63 6D 70 20 20 23 24 30 62 0D 62 63 |c04.cmp #$0b.bc|
00000480: 63 20 20 6F 6B 0D 6A 6D 70 20 20 73 79 6E 63 65 |c ok.jmp synce|
00000490: 72 72 3B 7A 75 76 69 65 6C 65 20 5A 79 6B 6C 65 |rr;zuviele Zykle|
000004A0: 6E 0D 0D 3A 6F 6B 6C 73 72 3B 68 61 6C 62 69 65 |n..:oklsr;halbie|
000004B0: 72 65 6E 0D 62 63 63 20 20 6F 6E 65 63 79 63 6C |ren.bcc onecycl|
000004C0: 65 0D 73 74 61 20 20 72 65 73 74 63 79 63 6C 65 |e.sta restcycle|
000004D0: 2B 31 0D 0D 3A 72 65 73 74 63 79 63 6C 65 62 70 |+1..:restcyclebp|
000004E0: 6C 20 20 72 65 73 74 63 79 63 6C 65 20 3B 5A 65 |l restcycle ;Ze|
000004F0: 69 74 61 75 73 67 6C 65 69 63 68 20 64 75 72 63 |itausgleich durc|
00000500: 68 0D 6E 6F 70 20 3B 41 6E 7A 61 68 6C 20 64 65 |h.nop ;Anzahl de|
00000510: 72 20 4E 4F 50 73 0D 6E 6F 70 0D 6E 6F 70 0D 6E |r NOPs.nop.nop.n|
00000520: 6F 70 0D 6E 6F 70 0D 6E 6F 70 0D 6C 64 61 20 20 |op.nop.nop.lda |
00000530: 23 24 33 30 20 3B 48 69 72 65 73 20 64 69 73 70 |#$30 ;Hires disp|
00000540: 6C 61 79 0D 73 74 61 20 20 24 64 30 31 31 20 3B |lay.sta $d011 ;|
00000550: 75 6E 64 20 31 2E 20 44 4D 41 20 69 6E 20 5A 65 |und 1. DMA in Ze|
00000560: 69 6C 65 20 24 30 33 30 0D 0D 6E 6F 70 3B 36 20 |ile $030..nop;6 |
00000570: 5A 79 6B 6C 65 6E 20 77 61 72 74 65 6E 0D 6E 6F |Zyklen warten.no|
00000580: 70 0D 6E 6F 70 0D 0D 6C 64 78 20 20 23 24 30 30 |p.nop..ldx #$00|
00000590: 20 3B 45 72 7A 65 75 67 75 6E 67 0D 6C 64 61 20 | ;Erzeugung.lda |
000005A0: 20 74 62 31 38 2C 78 20 3B 76 6F 6E 0D 73 74 61 | tb18,x ;von.sta|
000005B0: 20 20 24 64 30 31 38 20 3B 32 30 30 20 44 4D 41 | $d018 ;200 DMA|
000005C0: 2D 5A 65 69 6C 65 6E 0D 6C 64 61 20 20 74 62 31 |-Zeilen.lda tb1|
000005D0: 31 2C 78 0D 73 74 61 20 20 24 64 30 31 31 0D 69 |1,x.sta $d011.i|
000005E0: 6E 78 0D 63 70 78 20 20 23 32 30 30 0D 62 6E 65 |nx.cpx #200.bne|
000005F0: 20 20 68 61 6D 6C 6F 6F 70 0D 0D 3A 62 61 63 6B | hamloop..:back|
00000600: 6A 6D 70 20 20 24 65 61 33 31 20 3B 61 6C 74 65 |jmp $ea31 ;alte|
00000610: 20 49 52 51 2D 52 6F 75 74 69 6E 65 0D 0D 3A 73 | IRQ-Routine..:s|
00000620: 79 6E 63 65 72 72 6C 64 61 20 20 23 24 34 63 20 |yncerrlda #$4c |
00000630: 3B 54 69 6D 65 72 20 61 75 66 20 65 78 61 63 74 |;Timer auf exact|
00000640: 0D 73 74 61 20 20 24 64 63 30 35 3B 65 69 6E 65 |.sta $dc05;eine|
00000650: 6E 20 42 69 6C 64 73 63 68 69 72 6D 2D 0D 6C 64 |n Bildschirm-.ld|
00000660: 61 20 20 23 24 63 37 20 3B 64 75 72 63 68 6C 61 |a #$c7 ;durchla|
00000670: 75 66 20 65 69 6E 73 74 65 6C 6C 65 6E 0D 73 74 |uf einstellen.st|
00000680: 61 20 20 24 64 63 30 34 0D 6A 6D 70 20 20 62 61 |a $dc04.jmp ba|
00000690: 63 6B |ck |
.. LISTING 3:..SEI.LDX #$00 ;ERSTELLEN.
:MAKTABTXA ;EINER.CLC ;FUNKTIONSTABELLE.
ADC #$01 ;F.R.AND #$07 ;DIE.ORA #$38
;SPEICHERSTELLEN.STA TB11,X ;$D011 UND.
TXA ;$D018.ADC #$01.ASL.ASL.ASL.ASL.ORA
#$08.AND #$7F.STA TB18,X.INX.CPX #2
00 ;200 RASTERZEILEN ?.BNE MAKTAB.LDA
#$70 ;LETZTE ZEILE KEIN DMA.STA TB11+19
9 ;UND RESTZEILEN SCHWARZ.LDA #$08.STA
TB18+199.LDA #<NEUIRQ ;IRQ-VEKTOR.LDX
#>NEUIRQ ;VERBIEGEN.STA $0314.STX $03
15.LDA #$1B.STA $D011 ;$D011-INIT.LDA
#$18.STA $D016 ;MC-EIN.LDA #$00.STA
$D015 ;SPRITE-REGISTER L.SCHEN.STA $D02
0.STA $D021.STA $DC0E ;TIMER-STOP.LDA
#$4C ;NEUEN TIMERWERT F.R DEN.STA $DC0
5 ;ERSTEN IRQ SETZEN.LDA #$C7-63.STA $
DC04..:WAIT1LDA $D011 ;AUF ZEILE $030 W
ARTEN.BPL WAIT1..:WAIT2LDA $D011.BMI
WAIT2..LDA #$30.:WAIT3CMP $D012.BNE W
AIT3..LDX #$11 ;SYNCHRONISATION DES.LDA
#$18 ;TIMERS AUF IMMER DIESELBE.STA $
D011 ;HORIZONTALE POSITION DURCH.STX $D
C0E ;DMA-ZYKLEN-AUSGLEICH.LDA #$3B.STA
$D011.LDA $DC0D ;IRQ-FLAG L.SCHEN.LDA
$DD00 AND #$FC.ORA #$02.STA $DD00 ;B
ANK 1 EIN.CLI.RTS..:NEUIRQLDA #$9F ;MAX
IMALWERT DER VERGANGENEN.SEC ;ZYKLEN VER
GLEICHEN.SBC $DC04.CMP #$0B.BCC OK.JM
P SYNCERR;ZUVIELE ZYKLEN..:OKLSR;HALBIE
REN.BCC ONECYCLE.STA RESTCYCLE+1..:RES
TCYCLEBPL RESTCYCLE ;ZEITAUSGLEICH DURC
H.NOP ;ANZAHL DER NOPS.NOP.NOP.NOP.NOP.N
OP.LDA #$30 ;HIRES DISPLAY.STA $D011 ;
UND 1. DMA IN ZEILE $030..NOP;6 ZYKLEN W
ARTEN.NOP.NOP..LDX #$00 ;ERZEUGUNG.LDA
TB18,X ;VON.STA $D018 ;200 DMA-ZEILEN.
LDA TB11,X.STA $D011.INX.CPX #200.BNE
HAMLOOP..:BACKJMP $EA31 ;ALTE IRQ-ROU
TINE..:SYNCERRLDA #$4C ;TIMER AUF EXACT
.STA $DC05;EINEN BILDSCHIRM-.LDA #$C7
;DURCHLAUF EINSTELLEN.STA $DC04.JMP BA
CK
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL