This page (revision-9) was last changed on 03-Feb-2023 15:21 by Florian Dingler 

This page was created on 13-Mar-2010 19:16 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
9 03-Feb-2023 15:21 4 KB Florian Dingler to previous
8 05-Jul-2019 06:26 4 KB Florian Dingler to previous | to last
7 05-Jul-2019 06:18 4 KB Florian Dingler to previous | to last
6 31-Jan-2011 18:54 4 KB Gromit to previous | to last
5 31-Jan-2011 09:17 4 KB Gromit to previous | to last
4 26-Jul-2010 09:31 4 KB Gromit to previous | to last
3 26-Jul-2010 09:27 2 KB Gromit to previous | to last
2 13-Mar-2010 19:17 333 bytes Carsten Strotmann to previous | to last
1 13-Mar-2010 19:16 169 bytes Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 13 added 94 lines
{{{
MODULE; VBI DEMO FOR ANTIC
DEFINE RTI="$40",
PHA="$48",
PLA="$68",
TXA="$8A",
TAX="$AA",
TYA="$98",
TAY="$A8",
JMP="$4C",
XITVBV="$E462",
SAVETEMPS="[$A2 $07 $B5 $C0 $48 $B5
$A8 $48 $B5 $A0 $48 $B5 $80 $48
$CA $10 $F2 $A5 $D3 $48]",
GETTEMPS="[$68 $85 $D3 $A2 $00 $68
$95 $80 $68 $95 $A0 $68 $95 $A8
$68 $95 $C0 $E8 $E0 $08 $D0 $F0]"
CARD SDLST=560,VDSLST=512,
VVBLKD=$224
BYTE NMIEN=$D40E,COLBK=$D01A,
WSYNC=$D40A,COUNT=[0]
BYTE ARRAY DLIST
BYTE ARRAY CLRS(0)=[64 66 68 70 72 74
72 70 68 66 64 66 68 70 72
74 72 70 68 66 64 66 68
70 72 74 76 ]
PROC DLINT(); a DLI written in ACTION!
BYTE DUM
[PHA TXA PHA TYA PHA]
IF COUNT=26 THEN DUM=0
ELSE DUM=CLRS(COUNT) FI
WSYNC=1
COLBK=DUM
COUNT=COUNT+1
IF COUNT=27
THEN COUNT=0
FI
[PLA TAY PLA TAX PLA RTI]
PROC INIT7()
GRAPHICS(7)
SETCOLOR(0,2,10)
SETCOLOR(1,5,12)
SETCOLOR(2,0,0)
RETURN
PROC DLSETUP(); custom Display List
BYTE I
INIT7()
NMIEN=$40
DLIST=SDLST
VDSLST=DLINT
FOR I=30 TO 40
DO DLIST(I)=141 OD
FOR I=42 TO 54 STEP 2
DO DLIST(I)=141 OD
FOR I=57 TO 72 STEP 3
DO DLIST(I)=141 OD
FOR I=76 TO 84 STEP 4
DO DLIST(I)=141 OD
NMIEN=$C0
RETURN
PROC ROTATE(); the VBI routine
BYTE HOLD,CTR,CNTR
SAVETEMPS; save the temp registers
HOLD=CLRS(26); save the last element
FOR CTR=0 TO 25; the loop
DO CNTR=25-CTR; to count backwards, Action! has no STEP-1 statement
CLRS(CNTR+1)=CLRS(CNTR) OD; rotate
CLRS(0)=HOLD; put the last element into the first
GETTEMPS; get the temp registers
[JMP XITVBV]; exit the VBI
PROC VBINST(); install the VBI
NMIEN=0; turn off the interrupts
VVBLKD=ROTATE; vector to PROC ROTATE
NMIEN=$40; turn the interrupts back on
RETURN
PROC DJD(); the driver routine, named for a famous computer genius
BYTE CRSINH=752
VBINST(); install the VBI
DLSETUP(); set up the Display List
CRSINH=1
PRINTE()
PRINTE("Áîôéã Interrupts in ACTION!")
PRINT(" by DAVID PLOTKIN")
DO OD; an endless loop...
RETURN
}}}