_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

LISTING 3

FILE INFORMATION

FILENAME(S): LISTING 3

FILE TYPE(S): PRG

FILE SIZE: 1.6K

FIRST SEEN: 2025-11-30 01:13:01

APPEARS ON: 1 disk(s)

FILE HASH

37b5a453afe0217e36ac1d1e307cefb4f08c2713c1cc949906f1b7ae151d72bb

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
10112 SEITE A LISTING 3 PRG C64er 26 11 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

> 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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL