home *** CD-ROM | disk | FTP | other *** search
-
- FORTH
-
- : LAST-BYTE-OFFSET ;
- : NUM-SPRITES 4 + ;
- : FIRST-SPRITE 8 + ;
- : FIRST-FREE-WORD 12 + ;
-
- : DEF-SPRITE-AREA ( SIZE -> )
- <BUILDS
- HERE >R
- DUP ALLOT
- R LAST-BYTE-OFFSET !
- 0 R NUM-SPRITES !
- 16 R FIRST-SPRITE !
- 16 R> FIRST-FREE-WORD !
- DOES>
- ;
-
- HEX
- CODE MERGE-SPRITE' ( SPRITE-AREA / FILENAME -> )
- ENTER,
- R0 20 # MOV,
- R0 PUSH,
- CALL WORD
- R2 POP,
- R2 R2 4 # ADD,
- R1 POP,
- R0 0B # MOV,
- R0 R0 200 # ORR,
- 2E SWI,
- LEAVE,
- END-CODE
-
- CODE PUT-SPRITE ( CTRL-BLOCK / SPRITE-PTR / X / Y / GCOL )
- ENTER,
- R5 POP,
- R4 POP,
- R3 POP,
- R2 POP,
- R1 POP,
- R0 22 # MOV,
- R0 R0 200 # ORR,
- 2E SWI,
- LEAVE,
- END-CODE
- DECIMAL
-
- : GET-SPRITE-CTRL-BLOCK ( SPRITE-AREA / SPRITE-NO -> CTRL-BLOCK )
- SWAP DUP
- FIRST-SPRITE @ + ( ADDR OF FIRST SPRITE )
- SWAP -DUP IF
- 0 DO
- DUP @ +
- LOOP
- THEN
- ;
-
- HEX
- CODE READ-SPRITE-PIXEL ( CTRL-BLOCK / SPRITE-PTR / X / Y -> )
- R4 POP,
- R3 POP,
- R2 POP,
- R1 POP,
- R0 200 # MOV,
- R0 R0 29 # ORR,
- 2E SWI,
- R5 PUSH,
- PC R14 MOV,
- END-CODE
-
- CODE SPRITE-SIZE ( CTRL-BLOCK / SPRITE-PTR -> X / Y )
- R2 POP,
- R1 POP,
- R0 28 # MOV,
- R0 R0 200 # ORR,
- 2E SWI,
- R3 PUSH,
- R4 PUSH,
- PC R14 MOV,
- END-CODE
- DECIMAL
-