Mit jeder 2. Rasterzeile gehts stabil...
Hab aber nur kurz drübergeschaut...
lg, duke
Code
// sandbox.asm
.print ""
.print "codestart: $" + toHexString(SandboxStart) + "."
.print "code end: $" + toHexString(SandboxEnd) + "."
.print "codesize: $" + toHexString(SandboxEnd-SandboxStart) + " bytes."
// ---------------------------------------------------------------------------#
.pc = $0801 "Basic Upstart"
:BasicUpstart(start) // 10 sys$0810
.pc =$0810 "Jump in prg"
// ---------------------------------------------------------------------------#
start:
SandboxStart:
label0810:
ldx #$00 // $0810 | $a2, $00, --- |
stx $3fff // $0812 | $8e, $ff, $3f |
ldx #$27 // $0815 | $a2, $27, --- |
label0817:
lda label2000,x // $0817 | $bd, $00, $20 |
sta $0720,x // $081a | $9d, $20, $07 | screen ram (l20 ,c00)
dex // $081d | $ca, ---, --- |
bpl label0817 // $081e | $10, $f7, --- |
lda #$0e // $0820 | $a9, $0e, --- |
label0822:
sta $d800,x // $0822 | $9d, $00, $d8 | color ram (l00 ,c00)
sta $d900,x // $0825 | $9d, $00, $d9 | color ram (l06 ,c16)
sta $da00,x // $0828 | $9d, $00, $da | color ram (l12 ,c32)
sta $dae8,x // $082b | $9d, $e8, $da | color ram (l18 ,c24)
inx // $082e | $e8, ---, --- |
bne label0822 // $082f | $d0, $f1, --- |
sei // $0831 | $78, ---, --- |
ldx #$01 // $0832 | $a2, $01, --- |
stx $d01a // $0834 | $8e, $1a, $d0 | vic-irq mask register
stx $d019 // $0837 | $8e, $19, $d0 | vic-irq flag register
lda #$7f // $083a | $a9, $7f, --- |
sta $dc0d // $083c | $8d, $0d, $dc | cia1-cia interrupt control register (read irqs/write mask)
label083f:
and $d011 // $083f | $2d, $11, $d0 | vic-control register
sta $d011 // $0842 | $8d, $11, $d0 | vic-control register
lda #<label0868 // $0845 | $a9, $68, --- |
sta $fffe // $0847 | $8d, $fe, $ff | kernal-irq vector lo byte
lda #>label0868 // $084a | $a9, $08, --- |
sta $ffff // $084c | $8d, $ff, $ff | kernal-irq vector hi byte
lda #$35 // $084f | $a9, $35, --- |
sta $01 // $0851 | $85, $01, --- |
lda #$00 // $0853 | $a9, $00, --- |
sta $d012 // $0855 | $8d, $12, $d0 | vic-raster
cli // $0858 | $58, ---, --- |
label0859:
lda $dc01 // $0859 | $ad, $01, $dc | cia1-data port b (keyboard, joystick, paddles)
cmp #$ef // $085c | $c9, $ef, --- |
bne label0859 // $085e | $d0, $f9, --- |
lda #$37 // $0860 | $a9, $37, --- |
sta $01 // $0862 | $85, $01, --- |
jsr $fce2 // $0864 | $20, $e2, $fc |
label0867:
rts // $0867 | $60, ---, --- |
// -----------------------------------------------------------------------------#
label0868:
sta $02 // $0868 | $85, $02, --- |
stx $03 // $086a | $86, $03, --- |
sty $04 // $086c | $84, $04, --- |
lda #$1b // $086e | $a9, $1b, --- |
sta $d011 // $0870 | $8d, $11, $d0 | vic-control register
lda #$40 // $0873 | $a9, $40, --- |
label0875:
cmp $d012 // $0875 | $cd, $12, $d0 | vic-raster
bne label0875 // $0878 | $d0, $fb, --- |
ldy label103c // $087a | $ac, $3c, $10 |
ldx label1000,y // $087d | $be, $00, $10 |
beq label089a // $0880 | $f0, $18, --- |
label0882:
lda $d012 // $0882 | $ad, $12, $d0 | vic-raster
label0885:
cmp $d012 // $0885 | $cd, $12, $d0 | vic-raster
beq label0885 // $0888 | $f0, $fb, --- |
clc // $088a | $18, ---, --- |
lda $d011 // $088b | $ad, $11, $d0 | vic-control register
adc #$01 // $088e | $69, $01, --- |
and #$07 // $0890 | $29, $07, --- |
ora #$18 // $0892 | $09, $18, --- |
sta $d011 // $0894 | $8d, $11, $d0 | vic-control register
dex // $0897 | $ca, ---, --- |
bne label0882 // $0898 | $d0, $e8, --- |
label089a:
lda #<label08b3 // $089a | $a9, $b3, --- |
sta $fffe // $089c | $8d, $fe, $ff | kernal-irq vector lo byte
lda #>label08b3 // $089f | $a9, $08, --- |
sta $ffff // $08a1 | $8d, $ff, $ff | kernal-irq vector hi byte
ldx #$aa // $08a4 | $a2, $aa, --- |
stx $d012 // $08a6 | $8e, $12, $d0 | vic-raster
dec $d019 // $08a9 | $ce, $19, $d0 | vic-irq flag register
lda $02 // $08ac | $a5, $02, --- |
ldx $03 // $08ae | $a6, $03, --- |
ldy $04 // $08b0 | $a4, $04, --- |
rti // $08b2 | $40, ---, --- |
// -----------------------------------------------------------------------------#
label08b3:
sta $02 // $08b3 | $85, $02, --- |
stx $03 // $08b5 | $86, $03, --- |
sty $04 // $08b7 | $84, $04, --- |
jsr label0867 // $08b9 | $20, $67, $08 |
jsr label0867 // $08bc | $20, $67, $08 |
jsr label0867 // $08bf | $20, $67, $08 |
inc $d020 // $08c2 | $ee, $20, $d0 | vic-border color
inc $d021 // $08c5 | $ee, $21, $d0 | vic-bgcol 0
jsr label0867 // $08c8 | $20, $67, $08 |
jsr label0867 // $08cb | $20, $67, $08 |
jsr label0867 // $08ce | $20, $67, $08 |
jsr label0867 // $08d1 | $20, $67, $08 |
nop // $08d4 | $ea, ---, --- |
nop // $08d5 | $ea, ---, --- |
nop // $08d6 | $ea, ---, --- |
nop // $08d7 | $ea, ---, --- |
dec $d021 // $08d8 | $ce, $21, $d0 | vic-bgcol 0
dec $d020 // $08db | $ce, $20, $d0 | vic-border color
ldy label103c // $08de | $ac, $3c, $10 |
ldx label101e,y // $08e1 | $be, $1e, $10 |
beq label08fe // $08e4 | $f0, $18, --- |
label08e6:
lda $d012 // $08e6 | $ad, $12, $d0 | vic-raster
label08e9:
cmp $d012 // $08e9 | $cd, $12, $d0 | vic-raster
beq label08e9 // $08ec | $f0, $fb, --- |
clc // $08ee | $18, ---, --- |
lda $d011 // $08ef | $ad, $11, $d0 | vic-control register
adc #$01 // $08f2 | $69, $01, --- |
and #$07 // $08f4 | $29, $07, --- |
ora #$18 // $08f6 | $09, $18, --- |
sta $d011 // $08f8 | $8d, $11, $d0 | vic-control register
dex // $08fb | $ca, ---, --- |
bne label08e6 // $08fc | $d0, $e8, --- |
label08fe:
inc label103c // $08fe | $ee, $3c, $10 |
lda label103c // $0901 | $ad, $3c, $10 |
cmp #$1e // $0904 | $c9, $1e, --- |
bne label090d // $0906 | $d0, $05, --- |
lda #$00 // $0908 | $a9, $00, --- |
sta label103c // $090a | $8d, $3c, $10 |
label090d:
lda #<label0868 // $090d | $a9, $68, --- |
sta $fffe // $090f | $8d, $fe, $ff | kernal-irq vector lo byte
lda #>label0868 // $0912 | $a9, $08, --- |
sta $ffff // $0914 | $8d, $ff, $ff | kernal-irq vector hi byte
ldx #$00 // $0917 | $a2, $00, --- |
stx $d012 // $0919 | $8e, $12, $d0 | vic-raster
// +----------+---------------------------------------------------+
// | | read : get current raster position |
// | | write: set raster position for irq |
// | | bit 8 is at $d011 |
// +----------+---------------------------------------------------+
dec $d019 // $091c | $ce, $19, $d0 | vic-irq flag register
// +----------+-------------------------------------------------------+
// | bit 7 | 1 = irq has been generated |
// | bit 3 | light-pen triggered irq flag |
// | bit 2 | sprite to sprite collision irq flag (see $d01e) |
// | bit 1 | sprite to background collision irq flag (see $d01f) |
// | bit 0 | raster compare irq flag (see $d012) |
// +----------+-------------------------------------------------------+
lda $02 // $091f | $a5, $02, --- |
ldx $03 // $0921 | $a6, $03, --- |
ldy $04 // $0923 | $a4, $04, --- |
rti // $0925 | $40, ---, --- |
// -----------------------------------------------------------------------------#
.pc = $1000
label1000:
.byte $01, $03, $05, $07, $09, $0b, $0d, $0f // $1000-$1007 |.abcdefg|
.byte $0d, $0b, $09, $07, $05, $03, $01, $01 // $1000-$1007 |.abcdefg|
.byte $01, $01, $01, $01, $01, $01, $01, $01 // $1000-$1007 |.abcdefg|
.byte $01, $01, $01, $01, $01, $01
label101e:
.byte $0e, $0c, $0a, $08, $06, $04, $02, $00 // $101E-$1025 |onmlkjih|
.byte $02, $04, $06, $08, $0a, $0c, $0e, $0e // $101E-$1025 |onmlkjih|
.byte $0e, $0E, $0e, $0e, $0e, $0e, $0e, $0e // $101E-$1025 |onmlkjih|
.byte $0e, $0e, $0e, $0e, $0e, $0e
label103c:
.byte $00
// -----------------------------------------------------------------------------#
.pc = $2000
label2000:
.text "hello world............................."
// -----------------------------------------------------------------------------#
SandboxEnd:
Alles anzeigen