00000000: 0D 3A 54 42 31 38 3D 24 43 34 30 30 0D 3A 54 42 |.:TB18=$C400.:TB|
00000010: 31 31 3D 24 43 35 30 30 0D 0D 4F 52 47 20 24 43 |11=$C500..ORG $C|
00000020: 30 30 30 0D 0D 53 45 49 0D 4C 44 58 20 23 30 0D |000..SEI.LDX #0.|
00000030: 3A 54 42 47 4C 0D 54 58 41 0D 43 4C 43 0D 41 44 |:TBGL.TXA.CLC.AD|
00000040: 43 20 23 31 0D 41 4E 44 20 23 37 0D 4F 52 41 20 |C #1.AND #7.ORA |
00000050: 23 24 33 38 0D 53 54 41 20 54 42 31 31 2C 58 20 |#$38.STA TB11,X |
00000060: 3B 44 30 31 31 20 46 55 4E 4B 54 49 4F 4E 53 54 |;D011 FUNKTIONST|
00000070: 41 42 45 4C 4C 45 0D 54 58 41 20 20 20 20 20 20 |ABELLE.TXA |
00000080: 20 20 3B 47 45 4E 45 52 49 45 52 45 4E 0D 41 44 | ;GENERIEREN.AD|
00000090: 43 20 23 31 0D 41 53 4C 0D 41 53 4C 0D 41 53 4C |C #1.ASL.ASL.ASL|
000000A0: 0D 41 53 4C 0D 4F 52 41 20 23 38 0D 41 4E 44 20 |.ASL.ORA #8.AND |
000000B0: 23 24 37 46 0D 53 54 41 20 54 42 31 38 2C 58 20 |#$7F.STA TB18,X |
000000C0: 20 20 3B 44 30 31 38 20 41 44 52 45 53 53 54 41 | ;D018 ADRESSTA|
000000D0: 42 45 4C 4C 45 0D 49 4E 58 20 20 20 20 20 20 20 |BELLE.INX |
000000E0: 20 20 20 3B 47 45 4E 45 52 49 45 52 45 4E 0D 43 | ;GENERIEREN.C|
000000F0: 50 58 20 23 32 30 30 20 20 20 20 20 3B 32 30 30 |PX #200 ;200|
00000100: 20 52 41 53 54 45 52 5A 45 49 4C 45 4E 0D 42 4E | RASTERZEILEN.BN|
00000110: 45 20 54 42 47 4C 0D 4C 44 41 20 23 24 37 30 20 |E TBGL.LDA #$70 |
00000120: 20 20 20 20 3B 4C 45 54 5A 54 45 20 5A 45 49 4C | ;LETZTE ZEIL|
00000130: 45 20 4B 45 49 4E 20 44 4D 41 0D 53 54 41 20 54 |E KEIN DMA.STA T|
00000140: 42 31 31 2B 31 39 39 20 3B 55 4E 44 20 52 45 53 |B11+199 ;UND RES|
00000150: 54 5A 45 49 4C 45 4E 20 53 43 48 57 41 52 5A 0D |TZEILEN SCHWARZ.|
00000160: 4C 44 41 20 23 24 30 38 20 20 20 20 20 3B 53 4F |LDA #$08 ;SO|
00000170: 57 49 45 20 52 55 45 43 4B 53 45 54 5A 45 4E 0D |WIE RUECKSETZEN.|
00000180: 53 54 41 20 54 42 31 38 2B 31 39 39 20 3B 56 4F |STA TB18+199 ;VO|
00000190: 4E 20 44 30 31 38 0D 0D 4C 44 41 20 23 3C 4E 49 |N D018..LDA #<NI|
000001A0: 51 20 20 20 20 3B 4E 45 55 45 52 20 49 52 51 2D |Q ;NEUER IRQ-|
000001B0: 56 45 43 54 4F 52 0D 53 54 41 20 24 33 31 34 0D |VECTOR.STA $314.|
000001C0: 4C 44 41 20 23 3E 4E 49 51 0D 53 54 41 20 24 33 |LDA #>NIQ.STA $3|
000001D0: 31 35 0D 4C 44 41 20 23 24 31 42 0D 53 54 41 20 |15.LDA #$1B.STA |
000001E0: 24 44 30 31 31 20 20 20 20 3B 44 30 31 31 20 4E |$D011 ;D011 N|
000001F0: 4F 52 4D 41 4C 0D 4C 44 41 20 23 24 31 38 0D 53 |ORMAL.LDA #$18.S|
00000200: 54 41 20 24 44 30 31 36 20 20 20 20 3B 4D 55 4C |TA $D016 ;MUL|
00000210: 54 49 43 4F 4C 4F 52 0D 4C 44 41 20 23 30 0D 53 |TICOLOR.LDA #0.S|
00000220: 54 41 20 24 44 30 31 35 20 20 20 20 3B 4B 45 49 |TA $D015 ;KEI|
00000230: 4E 45 20 53 50 52 49 54 45 2D 44 4D 41 20 53 54 |NE SPRITE-DMA ST|
00000240: 4F 45 52 55 4E 47 0D 53 54 41 20 24 44 30 32 31 |OERUNG.STA $D021|
00000250: 0D 53 54 41 20 24 44 30 32 30 0D 53 54 41 20 24 |.STA $D020.STA $|
00000260: 44 43 30 45 20 20 20 20 3B 54 49 4D 45 52 20 53 |DC0E ;TIMER S|
00000270: 54 4F 50 0D 0D 4C 44 41 20 23 24 34 43 20 20 20 |TOP..LDA #$4C |
00000280: 20 20 3B 4E 45 55 45 52 20 54 49 4D 45 52 20 57 | ;NEUER TIMER W|
00000290: 45 52 54 0D 53 54 41 20 24 44 43 30 35 20 20 20 |ERT.STA $DC05 |
000002A0: 20 3B 46 55 45 52 20 45 52 53 54 45 4E 20 49 52 | ;FUER ERSTEN IR|
000002B0: 51 20 53 45 54 5A 45 4E 0D 4C 44 41 20 23 24 43 |Q SETZEN.LDA #$C|
000002C0: 37 2D 36 33 20 20 3B 2D 36 33 3D 20 31 20 52 41 |7-63 ;-63= 1 RA|
000002D0: 53 54 45 52 5A 45 49 4C 45 20 48 4F 45 48 45 52 |STERZEILE HOEHER|
000002E0: 0D 53 54 41 20 24 44 43 30 34 0D 0D 3A 57 4C 31 |.STA $DC04..:WL1|
000002F0: 20 20 20 20 20 20 20 20 20 3B 41 55 46 20 5A 45 | ;AUF ZE|
00000300: 49 4C 45 20 24 30 33 30 0D 4C 44 41 20 24 44 30 |ILE $030.LDA $D0|
00000310: 31 31 20 20 20 20 3B 28 55 4E 44 20 4E 49 43 48 |11 ;(UND NICH|
00000320: 54 20 24 31 33 30 29 0D 42 50 4C 20 57 4C 31 20 |T $130).BPL WL1 |
00000330: 20 20 20 20 20 3B 57 41 52 54 45 4E 0D 3A 57 4C | ;WARTEN.:WL|
00000340: 32 0D 4C 44 41 20 24 44 30 31 31 0D 42 4D 49 20 |2.LDA $D011.BMI |
00000350: 57 4C 32 0D 0D 4C 44 41 20 23 24 33 30 0D 3A 57 |WL2..LDA #$30.:W|
00000360: 4C 33 0D 43 4D 50 20 24 44 30 31 32 0D 42 4E 45 |L3.CMP $D012.BNE|
00000370: 20 57 4C 33 0D 0D 4C 44 58 20 23 24 31 31 20 20 | WL3..LDX #$11 |
00000380: 20 20 20 3B 53 59 4E 43 48 52 4F 4E 49 53 41 54 | ;SYNCHRONISAT|
00000390: 49 4F 4E 20 44 45 53 0D 4C 44 41 20 23 24 31 38 |ION DES.LDA #$18|
000003A0: 20 20 20 20 20 3B 54 49 4D 45 52 53 20 41 55 46 | ;TIMERS AUF|
000003B0: 20 49 4D 4D 45 52 20 44 49 45 53 45 4C 42 45 0D | IMMER DIESELBE.|
000003C0: 53 54 41 20 24 44 30 31 31 20 20 20 20 3B 48 4F |STA $D011 ;HO|
000003D0: 52 49 5A 2E 20 50 4F 53 49 54 49 4F 4E 20 44 55 |RIZ. POSITION DU|
000003E0: 52 43 48 0D 53 54 58 20 24 44 43 30 45 20 20 20 |RCH.STX $DC0E |
000003F0: 20 3B 44 4D 41 2D 5A 59 4B 4C 45 4E 20 41 55 53 | ;DMA-ZYKLEN AUS|
00000400: 47 4C 45 49 43 48 0D 0D 4C 44 41 20 23 24 33 42 |GLEICH..LDA #$3B|
00000410: 20 20 20 20 20 3B 48 49 52 45 53 2B 4E 4F 52 4D | ;HIRES+NORM|
00000420: 41 4C 57 45 52 54 0D 53 54 41 20 24 44 30 31 31 |ALWERT.STA $D011|
00000430: 0D 0D 4C 44 41 20 24 44 43 30 44 20 20 20 20 3B |..LDA $DC0D ;|
00000440: 45 56 4E 54 4C 2E 20 41 4C 54 45 53 20 49 52 51 |EVNTL. ALTES IRQ|
00000450: 2D 46 4C 41 47 20 41 55 53 0D 0D 4C 44 41 20 24 |-FLAG AUS..LDA $|
00000460: 44 44 30 30 20 20 20 20 3B 42 41 4E 4B 20 24 34 |DD00 ;BANK $4|
00000470: 30 30 30 2D 24 38 30 30 30 0D 41 4E 44 20 23 24 |000-$8000.AND #$|
00000480: 46 43 20 20 20 20 20 3B 41 4E 57 41 45 48 4C 45 |FC ;ANWAEHLE|
00000490: 4E 0D 4F 52 41 20 23 32 0D 53 54 41 20 24 44 44 |N.ORA #2.STA $DD|
000004A0: 30 30 0D 0D 43 4C 49 20 20 20 20 20 20 20 20 20 |00..CLI |
000004B0: 20 3B 4C 4F 53 20 47 45 48 54 27 53 0D 52 54 53 | ;LOS GEHT'S.RTS|
000004C0: 0D 0D 3A 4E 49 51 0D 4C 44 41 20 23 24 39 46 20 |..:NIQ.LDA #$9F |
000004D0: 20 20 20 20 20 20 3B 4D 49 4E 49 4D 41 4C 57 45 | ;MINIMALWE|
000004E0: 52 54 20 44 45 52 0D 53 45 43 20 20 20 20 20 20 |RT DER.SEC |
000004F0: 20 20 20 20 20 20 3B 56 45 52 47 41 4E 47 45 4E | ;VERGANGEN|
00000500: 45 4E 20 5A 59 4B 4C 45 4E 0D 53 42 43 20 24 44 |EN ZYKLEN.SBC $D|
00000510: 43 30 34 20 20 20 20 20 20 3B 41 42 57 45 49 43 |C04 ;ABWEIC|
00000520: 48 55 4E 47 20 4D 45 53 53 45 4E 0D 43 4D 50 20 |HUNG MESSEN.CMP |
00000530: 23 31 32 0D 42 43 43 20 4F 4B 0D 4A 4D 50 20 53 |#12.BCC OK.JMP S|
00000540: 59 4E 43 45 52 52 20 20 20 20 3B 5A 55 56 49 45 |YNCERR ;ZUVIE|
00000550: 4C 45 20 5A 59 4B 4C 45 4E 0D 3A 4F 4B 0D 4C 53 |LE ZYKLEN.:OK.LS|
00000560: 52 20 20 20 20 20 20 20 20 20 20 20 20 3B 48 41 |R ;HA|
00000570: 45 4C 46 54 45 20 44 41 20 4E 4F 50 3D 32 20 5A |ELFTE DA NOP=2 Z|
00000580: 59 4B 2E 0D 42 43 43 20 4F 4E 45 43 59 43 4C 45 |YK..BCC ONECYCLE|
00000590: 20 20 20 3B 42 52 41 4E 43 48 3D 33 20 5A 59 4B | ;BRANCH=3 ZYK|
000005A0: 2E 0D 3A 4F 4E 45 43 59 43 4C 45 20 20 20 20 20 |..:ONECYCLE |
000005B0: 20 3B 4B 45 49 4E 20 42 52 41 4E 43 48 20 32 0D | ;KEIN BRANCH 2.|
000005C0: 53 54 41 20 52 45 53 54 43 59 43 4C 45 2B 31 0D |STA RESTCYCLE+1.|
000005D0: 3A 52 45 53 54 43 59 43 4C 45 0D 42 50 4C 20 52 |:RESTCYCLE.BPL R|
000005E0: 45 53 54 43 59 43 4C 45 20 20 3B 45 49 4E 53 50 |ESTCYCLE ;EINSP|
000005F0: 52 55 4E 47 20 5A 55 20 4E 4F 50 53 0D 4E 4F 50 |RUNG ZU NOPS.NOP|
00000600: 20 20 20 20 20 20 20 20 20 20 20 20 3B 41 55 53 | ;AUS|
00000610: 47 4C 45 49 43 48 20 44 55 52 43 48 20 4E 4F 50 |GLEICH DURCH NOP|
00000620: 53 0D 4E 4F 50 0D 4E 4F 50 0D 4E 4F 50 0D 4E 4F |S.NOP.NOP.NOP.NO|
00000630: 50 0D 4E 4F 50 0D 0D 4C 44 41 20 23 24 33 30 20 |P.NOP..LDA #$30 |
00000640: 20 20 20 20 20 20 3B 48 49 52 45 53 20 44 49 53 | ;HIRES DIS|
00000650: 50 4C 41 59 0D 53 54 41 20 24 44 30 31 31 20 20 |PLAY.STA $D011 |
00000660: 20 20 20 20 3B 55 4E 44 20 31 2E 44 4D 41 20 49 | ;UND 1.DMA I|
00000670: 4E 20 5A 45 49 4C 45 20 24 33 30 0D 0D 4E 4F 50 |N ZEILE $30..NOP|
00000680: 20 20 20 20 20 20 20 20 20 20 20 20 3B 57 45 49 | ;WEI|
00000690: 54 45 52 45 53 20 54 49 4D 49 4E 47 0D 4E 4F 50 |TERES TIMING.NOP|
000006A0: 0D 4E 4F 50 0D 4C 44 58 20 23 30 20 20 20 20 20 |.NOP.LDX #0 |
000006B0: 20 20 20 20 3B 54 41 42 45 4C 4C 45 4E 5A 45 49 | ;TABELLENZEI|
000006C0: 47 45 52 20 52 45 53 45 54 0D 0D 3A 48 41 4D 4C |GER RESET..:HAML|
000006D0: 4F 4F 50 20 20 20 20 20 20 20 3B 45 52 5A 45 55 |OOP ;ERZEU|
000006E0: 47 55 4E 47 0D 4C 44 41 20 54 42 31 38 2C 58 20 |GUNG.LDA TB18,X |
000006F0: 20 20 20 20 3B 56 4F 4E 20 32 30 30 20 44 4D 41 | ;VON 200 DMA|
00000700: 2D 5A 45 49 4C 45 4E 0D 53 54 41 20 24 44 30 31 |-ZEILEN.STA $D01|
00000710: 38 20 20 20 20 20 20 3B 4D 49 54 20 41 44 52 45 |8 ;MIT ADRE|
00000720: 53 53 55 4D 53 43 48 41 4C 54 55 4E 47 0D 4C 44 |SSUMSCHALTUNG.LD|
00000730: 41 20 54 42 31 31 2C 58 0D 53 54 41 20 24 44 30 |A TB11,X.STA $D0|
00000740: 31 31 0D 49 4E 58 0D 43 50 58 20 23 32 30 30 0D |11.INX.CPX #200.|
00000750: 42 4E 45 20 48 41 4D 4C 4F 4F 50 0D 0D 3A 49 45 |BNE HAMLOOP..:IE|
00000760: 4E 44 0D 4A 4D 50 20 24 45 41 33 31 20 20 20 20 |ND.JMP $EA31 |
00000770: 3B 5A 55 52 20 41 4C 54 45 4E 20 49 52 51 20 52 |;ZUR ALTEN IRQ R|
00000780: 4F 55 54 49 4E 45 0D 0D 3A 53 59 4E 43 45 52 52 |OUTINE..:SYNCERR|
00000790: 20 20 20 20 20 3B 54 49 4D 45 52 20 41 55 46 20 | ;TIMER AUF |
000007A0: 45 58 41 43 54 0D 4C 44 41 20 23 24 34 43 20 20 |EXACT.LDA #$4C |
000007B0: 20 20 20 3B 45 49 4E 45 4E 20 42 49 4C 44 53 43 | ;EINEN BILDSC|
000007C0: 48 49 52 4D 44 55 52 43 48 4C 41 55 46 0D 53 54 |HIRMDURCHLAUF.ST|
000007D0: 41 20 24 44 43 30 35 20 20 20 20 3B 53 54 45 4C |A $DC05 ;STEL|
000007E0: 4C 45 4E 0D 4C 44 41 20 23 24 43 37 0D 53 54 41 |LEN.LDA #$C7.STA|
000007F0: 20 24 44 43 30 34 0D 4A 4D 50 20 49 45 4E 44 0D | $DC04.JMP IEND.|
00000800: 0D 0D |.. |
.:TB18=$C400.:TB11=$C500..ORG $C000..SEI
.LDX #0.:TBGL.TXA.CLC.ADC #1.AND #7.ORA
#$38.STA TB11,X ;D011 FUNKTIONSTABELLE.T
XA ;GENERIEREN.ADC #1.ASL.ASL.ASL
.ASL.ORA #8.AND #$7F.STA TB18,X ;D018
ADRESSTABELLE.INX ;GENERIEREN.C
PX #200 ;200 RASTERZEILEN.BNE TBGL.L
DA #$70 ;LETZTE ZEILE KEIN DMA.STA T
B11+199 ;UND RESTZEILEN SCHWARZ.LDA #$08
;SOWIE RUECKSETZEN.STA TB18+199 ;VO
N D018..LDA #<NIQ ;NEUER IRQ-VECTOR.S
TA $314.LDA #>NIQ.STA $315.LDA #$1B.STA
$D011 ;D011 NORMAL.LDA #$18.STA $D016
;MULTICOLOR.LDA #0.STA $D015 ;KEI
NE SPRITE-DMA STOERUNG.STA $D021.STA $D0
20.STA $DC0E ;TIMER STOP..LDA #$4C
;NEUER TIMER WERT.STA $DC05 ;FUER E
RSTEN IRQ SETZEN.LDA #$C7-63 ;-63= 1 RA
STERZEILE HOEHER.STA $DC04..:WL1
;AUF ZEILE $030.LDA $D011 ;(UND NICH
T $130).BPL WL1 ;WARTEN.:WL2.LDA $D
011.BMI WL2..LDA #$30.:WL3.CMP $D012.BNE
WL3..LDX #$11 ;SYNCHRONISATION DES.
LDA #$18 ;TIMERS AUF IMMER DIESELBE.
STA $D011 ;HORIZ. POSITION DURCH.STX
$DC0E ;DMA-ZYKLEN AUSGLEICH..LDA #$3B
;HIRES+NORMALWERT.STA $D011..LDA $D
C0D ;EVNTL. ALTES IRQ-FLAG AUS..LDA $
DD00 ;BANK $4000-$8000.AND #$FC ;
ANWAEHLEN.ORA #2.STA $DD00..CLI
;LOS GEHT'S.RTS..:NIQ.LDA #$9F ;M
INIMALWERT DER.SEC ;VERGANGEN
EN ZYKLEN.SBC $DC04 ;ABWEICHUNG MES
SEN.CMP #12.BCC OK.JMP SYNCERR ;ZUVIE
LE ZYKLEN.:OK.LSR ;HAELFTE DA
NOP=2 ZYK..BCC ONECYCLE ;BRANCH=3 ZYK
..:ONECYCLE ;KEIN BRANCH 2.STA REST
CYCLE+1.:RESTCYCLE.BPL RESTCYCLE ;EINSP
RUNG ZU NOPS.NOP ;AUSGLEICH D
URCH NOPS.NOP.NOP.NOP.NOP.NOP..LDA #$30
;HIRES DISPLAY.STA $D011 ;UND
1.DMA IN ZEILE $30..NOP ;WEI
TERES TIMING.NOP.NOP.LDX #0 ;TAB
ELLENZEIGER RESET..:HAMLOOP ;ERZEU
GUNG.LDA TB18,X ;VON 200 DMA-ZEILEN.
STA $D018 ;MIT ADRESSUMSCHALTUNG.LD
A TB11,X.STA $D011.INX.CPX #200.BNE HAML
OOP..:IEND.JMP $EA31 ;ZUR ALTEN IRQ R
OUTINE..:SYNCERR ;TIMER AUF EXACT.LD
A #$4C ;EINEN BILDSCHIRMDURCHLAUF.ST
A $DC05 ;STELLEN.LDA #$C7.STA $DC04.J
MP IEND...
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL