home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Transactor
/
Transactor_26_1988_Transactor_Publishing.d64
/
dynaborder.pal
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
2KB
|
122 lines
1000 sys700
1010 ; * dynaborder *
1020 ; * pal source code *
1030 ; * by jean-yves lemieux *
1040 ; * rimouski (qc) dec 88 *
1050 ; ************************
1060 ;
1070 .opt oo
1080 ;
1090 tem =$254 ;temporary storage
1100 irqold =$257
1110 irqvec =$314 ;irq vector
1120 rashi =$d011 ;raster line
1130 raslo =$d012 ;registers
1140 irr =$d019 ;int. request reg
1150 imr =$d01a ;int. mask reg
1160 bcol =$d020 ;border color
1170 icr =$dc0d ;int. cntrl reg
1180 ;
1190 *=$3000
1200 ;
1210 sei
1220 lda irqvec ;prepare new
1230 ldy irqvec+1 ;interrupt
1240 sta irqold ;procedure
1250 sty irqold+1
1260 lda #<newirq
1270 ldy #>newirq
1280 di sta irqvec
1290 sty irqvec+1
1300 cli
1310 lda #1 ;enable raster
1320 sta imr ;line interrupt
1330 sta irr ;reset irr
1340 lda #$1b ;clear raster
1350 sta rashi ;compare bit (8)
1360 lda #$7f ;clear irq
1370 sta icr ;flag bit
1380 lda #$00
1390 sta tem ;prepare
1400 sta tem+2 ;self-modifying
1410 lda #$05 ;routine
1420 sta tem+1
1430 lda #$d7
1440 sta n6+1
1450 rts
1460 ;
1470 newirq =*
1480 ;
1490 lda #$32 ;first interrupt
1500 sta raslo ;at line 50
1510 ldx #1 ;reset
1520 stx irr ;register
1530 ldy #0
1540 n1 adc #2 ;if a raster line
1550 n2 cmp raslo ;has been reached
1560 bne n2 ;we display
1570 stx bcol ;a color stripe
1580 n3 inx
1590 adc tem+1 ;separated by
1600 n4 cmp raslo
1610 bne n4
1620 sty bcol ;a black line
1630 n5 cpx #$05
1640 bne n1
1650 bit tem
1660 bvs rest
1670 ;
1680 ldx #0 ;modify prior
1690 stx n5+1 ;routine
1700 ldx #$ca ;'dex' opcode
1710 stx n3
1720 n6 lda #$00 ;display bottom
1730 sta raslo ;rainbow
1740 ldx #1
1750 stx irr
1760 dec tem
1770 ldx #4
1780 bne n1
1790 ;
1800 rest =* ;restore newirq
1810 ; routine
1820 lda #$e8 ;'inx' opcode
1830 sta n3
1840 lda #5
1850 sta n5+1
1860 inc tem
1870 lda tem+2
1880 beq r1
1890 sec ;modify raster
1900 lda n6+1 ;line value
1910 sbc #4
1920 sta n6+1
1930 ldx tem+1 ;and stripe width
1940 inx
1950 cpx #$16
1960 bne cirq
1970 inc tem+2
1980 beq cirq
1990 r1 ldx tem+1
2000 clc
2010 lda n6+1
2020 adc #$04
2030 sta n6+1
2040 dex
2050 bne cirq
2060 dec tem+2
2070 ;
2080 cirq =* ;continue irq
2090 ;
2100 stx tem+1
2110 lda #$30 ;next raster line
2120 sta raslo ;interrupt
2130 lda #1
2140 sta irr
2150 jmp (irqold)
2160 disable =*
2170 sei
2180 lda irqold
2190 ldy irqold+1
2200 jmp di