home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-08-23 | 50.8 KB | 2,710 lines |
- *------------------------------------------------------
- *
- * << Super Magic 320 >> version 2.3B
- *
- * By: Lim Thye Chean
- *
- *
- * No part of Super Magic 320 library routines should
- * be modified without the permission of the author.
- *
- * Credit is given to FTA for the Tool 219.
- *
- *
- * Routines
- * --------
- * Set up the parameters required by the program before
- * calling. Please take note of the restrictions on
- * some of the parameters in certain routines.
- *
- * Please do not use Temp variables in the program. Do
- * not use the parameters as storage except for calling
- * routines. Do not modify RndFlag.
- *
- * Most routines will preserved the values of X and Y
- * registers. Value in accumulator will be changed.
- *
- * Some routines have two versions: a normal version
- * and a faster, but more restricted version.
- *
- *
- * Colours
- * -------
- * Where defining colours, notice that there are 3 types
- * of colour parameter.
- *
- * 1. Colour
- * When colour is needed when calling routine,
- * programmer can also use names like Red, Green,
- * Blue, etc (when standard palette is used), or
- * $0000, $1111, ... to represent colour 0, 1, ...
- * in the palette.
- *
- * 2. Gradient colour
- * Use only in Gradient Fill palette routine.
- * Programmer use names like GRed, GGreen, GBlue to
- * represent gradient colours.
- *
- * 3. RGB Colour
- * When colour is added into the palette, programmer
- * needs to specify the RGB components of the
- * colours. It is a 12-bits value, 4 bits for each
- * component. Programmer can use names like RRed,
- * RGreen, RBlue, etc, or 12-bit values.
- *
- *------------------------------------------------------
-
- *------------------------------------------------------
- *
- * Startup
- *
-
- Startup start
-
- jsr StartMM
- jsr SHires
- jsr SetSClr
- jsr CalAddr
- jsr SetSCB0
-
- stz Colour
- jsr ClrScrn
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Super Hires display
- *
-
- SHires start
-
- sep #$20
- short m
-
- lda #$C1
- sta NewVideo
-
- rep #$20
- long m
-
- jsr ShadowOn
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Allocate memory
- *
- * Temp 1: useless handle
- *
-
- StartMM start
- using ToolData
-
- phk Push Program Bank register to
- plb Data Bank register
-
- _TLStartup Start Tool Locator
-
- wordresult
-
- _MMStartup Start Memory Manager
- jsr CheckErr
- pl2 MasterID
- ora #$0100
- sta OurID
-
- longresult
-
- ph4 #32000 Allocate memory
- ph2 OurID
- ph2 #$C017
- ph4 #$00012000
- _NewHandle
- jsr CheckErr
-
- pl4 Temp1
-
- rts
-
-
- *------------------------------------------------------
- *
- * Shut down tools
- *
-
- ShutDown entry
-
- ph2 OurID Release all memory
- _DisposeAll
-
- ph2 MasterID Shutdown Memory Manager
- _MMShutDown
-
- _TLShutDown Shutdown Tool Locator
-
- rts
-
- *------------------------------------------------------
- *
- * Tools support function and data
- *
-
- CheckErr entry
- bcs Error
- rts
-
- Error pha
- ph4 #FailMsg
- _SysFailMgr
-
- end
-
- ToolData data
-
- MasterID ds 2
- OurID ds 2
-
- FailMsg dc h'6',c'Error:'
-
- end
-
- *------------------------------------------------------
- *
- * Text display
- *
-
- Text start
-
- sep #$20
- short m
-
- lda #1
- sta NewVideo
-
- rep #$20
- long m
-
- jsr ShadowOff
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Switch on/off shadowing
- *
-
- ShadowOn start
-
- lda Shadow
- and #$FFF7
- sta Shadow
-
- rts
-
- ShadowOff entry
-
- lda Shadow
- ora #%1000
- sta Shadow
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Set standard colours in all palettes
- *
- * Temp 1: palette number
- *
-
- SetSClr start
- using SColour
-
- ldx #0
- lda #16
- sta Temp1
-
- SSC1 ldy #0
-
- SSC2 lda SColour,y
- sta PlttAddr,x
- inx
- inx
- iny
- iny
- cpy #32
- bcc SSC2
-
- dec Temp1
- bne SSC1
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Set all SCB to palette 0
- *
-
- SetSCB0 start
-
- ldx #200
-
- SS01 lda #0
- sta SCBAddr-2,x
- dex
- dex
- bne SS01
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Set SCB to palette n
- *
- * Input Y : location of SCB
- * Palette: palette number
- *
-
- SetSCB start
-
- phx
-
- sep #$20
- short m
-
- lda Palette
- ldx Y
- sta SCBAddr,x
-
- rep #$20
- long m
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Plot pixel
- *
- * Input X, Y : location of the pixel
- * Colour: colour of the pixel
- *
- * Temp 1: int(X / 2)
- * 2: pixel mask
- * 3: pixel colour
- *
-
- Plot start
- using Address
-
- phx
-
- lda X Determine whether the pixel is
- lsr a even or odd
- sta Temp1
- bcc P1
-
- lda #$FFF0
- sta Temp2
- lda Colour
- and #$F
- bra P2
-
- P1 lda #$FF0F
- sta Temp2
- lda Colour
- and #$F0
-
- P2 sta Temp3
- lda Y Calculate the address of the
- asl a pixel
- tax
- lda Address,x
- adc Temp1
- tax
-
- lda SHRAddr,x
- and Temp2
- ora Temp3
- sta SHRAddr,x
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Erase pixel (to colour 0)
- *
- * Input X, Y: location of the pixel
- *
- * Temp 1: int(X / 2)
- *
-
- *
- * Erase
- *
-
- Erase start
- using Address
-
- phx
-
- lda X Determine whether the pixel is
- lsr a even or odd
- sta Temp1
- bcc P1
-
- lda #$FFF0
- sta Temp2
- bra P2
-
- P1 lda #$FF0F
- sta Temp2
-
- P2 lda Y Calculate the address of the
- asl a pixel
- tax
- lda Address,x
- adc Temp1
- tax
-
- lda SHRAddr,x
- and Temp2
- sta SHRAddr,x
-
- plx
-
- rts
-
- end
-
- *
- * Fast erase (background destroyed)
- *
-
- Erase2 start
- using Address
-
- phx
-
- lda X Determine whether the pixel is
- lsr a even or odd
- sta Temp1
-
- lda Y Calculate the address of the
- asl a pixel
- tax
- lda Address,x
- adc Temp1
- tax
-
- lda #0
- sta SHRAddr,x
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Display pixel
- *
- * Input X, Y : location of the pixel
- *
- * Temp 1: int(X/2)
- *
-
- Display start
- using Address
-
- phx
-
- lda X
- lsr a
- sta Temp1
-
- lda Y Calculate the address of the
- asl a pixel
- tax
- lda Address,x
- adc Temp1
- tax
-
- lda SHRAddr,x
- sta SHRAddr,x
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Horizontal line
- *
- * Input X1, X2, Y: start and end position of the line
- * Colour : colour of the line
- *
- * Temp 1: int(X / 2)
- *
- * Note: X1 <= X2, X1 must be even, X2 must be odd.
- *
-
- HorLine start
- using Address
-
- phx
- phy
-
- lda X1
- lsr a
- sta Temp1
-
- lda Y
- asl a
- tax
- lda Address,x
- adc Temp1
- tay
-
- pea $0101
- plb
- plb
-
- lda X2 Convert the length of line to
- sec number of bytes
- sbc X1
- inc a
- lsr a
- tax
-
- sep #$20
- short m
-
- HL1 lda Colour
- sta |SHRAddr,y
- iny
- dex
- bne HL1
-
- rep #$20
- long m
-
- phk
- plb
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Vertical line
- *
- * Input X, Y1, Y2: start and end position of the line
- * Colour : colour of the line
- *
- * Temp 1: int(X / 2)
- * 2: pixel mask
- * 3: pixel colour
- *
- * Note: Y1 <= Y2
- *
-
- VerLine start
- using Address
-
- phx
- phy
-
- VL1 lda X Determine whether the pixel is
- lsr a even or odd
- sta Temp1
- bcc VL2
-
- lda #$FFF0
- sta Temp2
- lda Colour
- and #$F
- bra VL3
-
- VL2 lda #$FF0F
- sta Temp2
- lda Colour
- and #$F0
-
- VL3 sta Temp3
-
- lda Y1
- asl a
- tax
- lda Address,x
- adc Temp1
- tay
-
- pea $0101
- plb
- plb
-
- lda Y2
- sec
- sbc Y1
- inc a
- tax
-
- clc
-
- VL4 lda |SHRAddr,y
- and Temp2
- ora Temp3
- sta |SHRAddr,y
-
- tya
- adc #160
- tay
-
- dex
- bne VL4
-
- phk
- plb
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Plot shape
- *
- * Input 16-bit stack: address of shape
- * 16-bit stack: address of mask
- * 16-bit stack: address of background
- * X, Y : upper left corner of shape
- * Length : length of shape
- * Height : height of shape
- *
- * Temp 1: length / 2
- * 2: length / 2 - 2
- *
- * Note: The length of the shape should be multiple of
- * four, and the X value should be even.
- *
-
- PlotShp start
- using AddrTbl
-
- pl2 Temp1
- pl2 BackAddr
- pl2 MaskAddr
- pl2 ShpAddr
-
- ph2 Temp1
-
- phx
- phy
-
- lda X
- lsr a
- sta YAddr
-
- lda Y
- asl a
- tax
- lda AddrTbl,x
- adc YAddr
- sta YAddr
-
- ldx Height
-
- lda Length Convert length into number of
- lsr a bytes
- sta Temp1
- dec a
- dec a
- sta Temp2
-
- PS1 ldy Temp2
-
- PS2 lda [YAddr],y
- sta (BackAddr),y Save the background
- and (MaskAddr),y Mask the background
- ora (ShpAddr),y Plot four pixels
- sta [YAddr],y
- dey
- dey
- bpl PS2
-
- lda YAddr
- adc #160
- sta YAddr
-
- ldy Temp1
-
- tya
- adc ShpAddr
- sta ShpAddr
-
- tya
- adc MaskAddr
- sta MaskAddr
-
- tya
- adc BackAddr
- sta BackAddr
-
- dex
- bne PS1
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Fast plot shape (background not saved)
- *
- * Input 16-bit stack: address of shape
- * 16-bit stack: address of mask
- * X, Y : upper left corner of shape
- * Length : length of shape
- * Height : height of shape
- *
- * Temp 1: length / 2
- * 2: length / 2 - 2
- *
- * Note: The length of the shape should be multiple of
- * four, and the X value should be even.
- *
-
- PlotShp2 start
- using AddrTbl
-
- pl2 Temp1
- pl2 MaskAddr
- pl2 ShpAddr
-
- ph2 Temp1
-
- phx
- phy
-
- lda X
- lsr a
- sta YAddr
-
- lda Y
- asl a
- tax
- lda AddrTbl,x
- adc YAddr
- sta YAddr
-
- ldx Height
-
- lda Length Convert length into number of
- lsr a bytes
- sta Temp1
- dec a
- dec a
- sta Temp2
-
- PS1 ldy Temp2
-
- PS2 lda [YAddr],y
- and (MaskAddr),y
- ora (ShpAddr),y Plot four pixels
- sta [YAddr],y
- dey
- dey
- bpl PS2
-
- lda YAddr
- adc #160
- sta YAddr
-
- lda ShpAddr
- adc Temp1
- sta ShpAddr
-
- lda MaskAddr
- adc Temp1
- sta MaskAddr
-
- dex
- bne PS1
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Erase shape
- *
- * Input 16-bit stack: address of background
- * X, Y : upper left corner of background
- * Length : length of background
- * Height : height of background
- *
- * Temp 1: length / 2
- * 2: length / 2 - 2
- *
- * Note: The length of the background should be multiple
- * of four, and the X value should be even.
- *
-
- ErsShp start
- using AddrTbl
-
- pl2 Temp1
- pl2 BackAddr
-
- ph2 Temp1
- phx
- phy
-
- lda X
- lsr a
- sta YAddr
-
- lda Y
- asl a
- tay
- lda AddrTbl,y
- adc YAddr
- sta YAddr
-
- ldx Height
-
- lda Length Convert the length into number
- lsr a of bytes
- sta Temp1
- dec a
- dec a
- sta Temp2
-
- ES1 ldy Temp2
-
- ES2 lda (BackAddr),y Put back the background
- sta [YAddr],y
- dey
- dey
- bpl ES2
-
- lda YAddr
- adc #160
- sta YAddr
-
- lda BackAddr
- adc Temp1
- sta BackAddr
-
- dex
- bne ES1
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Fast erase shape (background destroyed)
- *
- * X, Y : upper left corner of background
- * Length: length of background
- * Height: height of background
- *
- * Temp 1: length / 2
- * 2: length / 2 - 2
- *
- * Note: The length of the background should be multiple
- * of four, and the X value should be even.
- *
-
- ErsShp2 start
- using AddrTbl
-
- phx
- phy
-
- lda X
- lsr a
- sta YAddr
-
- lda Y
- asl a
- tay
- lda AddrTbl,y
- adc YAddr
- sta YAddr
-
- ldx Height
-
- lda Length Convert the length into number
- lsr a of bytes
- sta Temp1
- dec a
- dec a
- sta Temp2
-
- ES1 ldy Temp2
-
- lda #0
-
- ES2 sta [YAddr],y
- dey
- dey
- bpl ES2
-
- lda YAddr
- adc #160
- sta YAddr
-
- dex
- bne ES1
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Display shape
- *
- * Input X, Y : upper left corner of shape
- * Length: length of shape
- * Height: height of shape
- *
- * Temp 1: length / 2 - 2
- *
- * Note: The length of the shape should be multiple of
- * four, and the X value should be even.
- *
-
- DsplShp start
- using AddrTbl
-
- phx
- phy
-
- lda X
- lsr a
- sta YAddr
-
- lda Y
- asl a
- tay
- lda AddrTbl,y
- adc YAddr
- sta YAddr
-
- ldx Height
-
- lda Length Convert length into number of
- lsr a bytes
- dec a
- dec a
- sta Temp1
-
- pea $0101
- plb
- plb
-
- DS1 ldy Temp1
-
- DS2 lda (YAddr),y
- sta (YAddr),y
- dey
- dey
- bpl DS2
-
- lda YAddr
- adc #160
- sta YAddr
-
- dex
- bne DS1
-
- phk
- plb
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Display shape (including the surrounded area)
- *
- * Input X, Y : upper left corner of shape
- * Length: length of shape
- * Height: height of shape
- *
- * Temp 1: length / 2
- *
- * Note: The length of the shape should be multiple of
- * four, and the X value should be even.
- * Additional twp pixels from each side on each
- * of the axis are displayed.
- *
-
- DsplShp2 start
- using AddrTbl
-
- phx
- phy
-
- lda X
- lsr a
- dec a
- sta YAddr
-
- lda Y
- dec a
- dec a
- asl a
- tay
- lda AddrTbl,y
- adc YAddr
- sta YAddr
-
- lda Height
- adc #4
- tax
-
- lda Length Convert length into number of
- lsr a bytes
- sta Temp1
-
- pea $0101
- plb
- plb
-
- DS1 ldy Temp1
-
- DS2 lda (YAddr),y
- sta (YAddr),y
- dey
- dey
- bpl DS2
-
- lda YAddr
- adc #160
- sta YAddr
-
- dex
- bne DS1
-
- phk
- plb
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Colour cycle (Colour 1 to 15)
- *
- * Input Palette: palette number
- *
-
- *
- * Cycle the palette colour to the left
- *
-
- CycLeft start
-
- phx
- phy
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- tax
- inx
- inx
-
- lda PlttAddr,x
- pha
-
- ldy #14
-
- CL1 lda PlttAddr+2,x
- sta PlttAddr,x
- inx
- inx
- dey
- bne CL1
-
- pla
- sta PlttAddr,x
-
- ply
- plx
-
- rts
-
- end
-
- *
- * Cycle the palette colour to the right
- *
-
- CycRight start
-
- phx
- phy
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- asl a
- tax
- dex
- dex
-
- lda PlttAddr,x
- pha
-
- ldy #14
-
- CR1 lda PlttAddr-2,x
- sta PlttAddr,x
- dex
- dex
- dey
- bne CR1
-
- pla
- sta PlttAddr,x
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Partial colour cycle
- *
- * Input Palette: palette number
- * ClrNum1: first colour in the colour range
- * ClrNum2: last colour in the colour range
- *
- * Note: ClrNum1 < ClrNum2
- *
-
- *
- * Partial cycle the palette colour to the left
- *
-
- PCycLeft start
-
- phx
- phy
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- tax
-
- ldy ClrNum1
-
- PCL1 inx
- inx
- dey
- bne PCL1
-
- lda PlttAddr,x
- pha
-
- lda ClrNum2
- sec
- sbc ClrNum1
- tay
-
- PCL2 lda PlttAddr+2,x
- sta PlttAddr,x
- inx
- inx
- dey
- bne PCL2
-
- pla
- sta PlttAddr,x
-
- ply
- plx
-
- rts
-
- end
-
- *
- * Partial cycle the palette colour to the right
- *
-
- PCycRight start
-
- phx
- phy
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- tax
-
- ldy ClrNum2
-
- PCR1 inx
- inx
- dey
- bne PCR1
-
- lda PlttAddr,x
- pha
-
- lda ClrNum2
- sec
- sbc ClrNum1
- tay
-
- PCR2 lda PlttAddr-2,x
- sta PlttAddr,x
- dex
- dex
- dey
- bne PCR2
-
- pla
- sta PlttAddr,x
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Gradient fill palette (colour 1 to 15)
- *
- * Input Palette: palette number to be gradient filled
- * GColour: gradient colour
- *
-
- GrdFill start
-
- phx
- phy
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- tax
-
- lda #0
- ldy #16
-
- GF1 sta PlttAddr,x
- inx
- inx
- adc GColour
- dey
- bne GF1
-
- ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Set Colour
- *
- * Input Palette: palette number
- * ClrNum : colour number to be set
- * RGB : RGB component of colour to be set
- *
-
- SetClr start
- using SColour
-
- phx
-
- lda Palette
- asl a
- asl a
- asl a
- asl a
- asl a
- adc ClrNum
- adc ClrNum
- tax
-
- lda RGB
- sta PlttAddr,x
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Print message
- *
- * Input 16-bit stack: address of the message
- * X : start column (0..78)
- * Y : line (0..199)
- * Colour : colour of the message
- *
- * Temp 1: counter
- * 2: Y address
- * 3: Number of characters printed
- * 4: current X location
- *
-
- *
- * Print
- *
-
- Print start
- using AddrTbl
- using Font
-
- pl2 Temp1
- pl2 MsgAddr
-
- ph2 Temp1
-
- phx
- phy
-
- lda X
- sta Temp4
-
- lda Y Calculate the address of the
- asl a character position
- tay
- lda AddrTbl,y
- sta Temp2
-
- stz Temp3
-
- P1 ldy Temp3
- lda (MsgAddr),y
- and #$FF
- beq Done
- cmp #" "
- beq P4
-
- sec
- sbc #" "
- asl a character in the font
- asl a
- asl a
- asl a
- asl a
- tax
-
- lda Temp4
- asl a
- clc
- adc Temp2
- sta YAddr
-
- lda #8
- sta Temp1
-
- P2 ldy #0
-
- P3 lda Font,x
- eor #$FFFF
- and [YAddr],y
- ora Font,x
- and Colour
- sta [YAddr],y
- inx
- inx
- iny
- iny
- cpy #4
- bcc P3
- dec Temp1
- beq P4
-
- lda YAddr
- clc
- adc #160
- sta YAddr
- bra P2
-
- P4 lda Temp4
- clc
- adc #2
- cmp #79
- bcs Done
- sta Temp4
- inc Temp3
- bra P1
-
- Done ply
- plx
-
- rts
-
- end
-
- *
- * Print (background destroyed)
- *
-
- Print2 start
- using AddrTbl
- using Font
-
- pl2 Temp1
- pl2 MsgAddr
-
- ph2 Temp1
-
- phx
- phy
-
- lda X
- sta Temp4
-
- lda Y Calculate the address of the
- asl a character position
- tay
- lda AddrTbl,y
- sta Temp2
-
- stz Temp3
-
- P1 ldy Temp3
- lda (MsgAddr),y
- and #$FF
- beq Done
-
- sec
- sbc #" "
- asl a character in the font
- asl a
- asl a
- asl a
- asl a
- tax
-
- lda Temp4
- asl a
- clc
- adc Temp2
- sta YAddr
-
- lda #8
- sta Temp1
-
- P2 ldy #0
-
- P3 lda Font,x
- and Colour
- sta [YAddr],y
- inx
- inx
- iny
- iny
- cpy #4
- bcc P3
- dec Temp1
- beq P4
-
- lda YAddr
- clc
- adc #160
- sta YAddr
- bra P2
-
- P4 lda Temp4
- clc
- adc #2
- cmp #79
- bcs Done
- sta Temp4
- inc Temp3
- bra P1
-
- Done ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Music routines (Tool 219 by FTA)
- *
-
- *
- * Start music tool
- *
-
- StartMsT start
- using ToolData
-
- ph2 #219
- ph2 #0
- ldx #$0F01 Load one tool
- jsl $E10000
-
- ph2 OurID
- ldx #$02DB
- jsl $E10000
-
- rts
-
- *
- * Load one song
- *
- * Input 32-bit stack: address of song
- *
- * Temp 1: Return address
- *
-
- LoadSong entry
-
- pl2 Temp1
-
- ldx #$09DB
- jsl $E10000
-
- ph2 Temp1
-
- rts
-
- *
- * Play song
- *
- * Input Loop: play the song continuously
- *
-
- PlaySong entry
-
- ph2 Loop
- ldx #$0ADB
- jsl $E10000
-
- rts
-
- *
- * Stop song
- *
-
- StopSong entry
-
- ldx #$0BDB
- jsr $E10000
-
- rts
-
- *
- * Shut down tool
- *
-
- ShutDMsT entry
-
- ldx #$03DB
- jsr $E10000
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Clear screen
- *
- * Input Colour: colour of the screen
- *
-
- ClrScrn start
-
- phx
-
- pea $0101
- plb
- plb
-
- ldx #32000
- sec
-
- CS1 lda Colour
- sta |SHRAddr-2,x
- sta |SHRAddr-4,x
- sta |SHRAddr-6,x
- sta |SHRAddr-8,x
- sta |SHRAddr-10,x
- sta |SHRAddr-12,x
- sta |SHRAddr-14,x
- sta |SHRAddr-16,x
- sta |SHRAddr-18,x
- sta |SHRAddr-20,x
- sta |SHRAddr-22,x
- sta |SHRAddr-24,x
- sta |SHRAddr-26,x
- sta |SHRAddr-28,x
- sta |SHRAddr-30,x
- sta |SHRAddr-32,x
- txa
- sbc #32
- tax
- bne CS1
-
- phk
- plb
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Clear area
- *
- * Input Y1, Y2: start and end Y position of the area
- * Colour: colour of the area
- *
- * Temp 1: (Y2 - Y1 + 1)
- *
- * Note: Y1 <= Y2
- *
-
- ClrArea start
- using Address
-
- phx
- phy
-
- lda Y2 Amount of words to be cleared is
- sec (Y2 - Y1 + 1) * 160
- sbc Y1 Since 16 words is erased each time,
- inc a Total erase operations is
- sta Temp1 (Y2 - Y1 + 1) * 5
- asl a
- asl a
- clc
- adc Temp1
- tax
-
- lda Y1
- asl a
- tay
- lda Address,y
- tay
-
- pea $0101
- plb
- plb
-
- CA1 lda Colour
- sta |SHRAddr,y
- sta |SHRAddr+2,y
- sta |SHRAddr+4,y
- sta |SHRAddr+6,y
- sta |SHRAddr+8,y
- sta |SHRAddr+10,y
- sta |SHRAddr+12,y
- sta |SHRAddr+14,y
- sta |SHRAddr+16,y
- sta |SHRAddr+18,y
- sta |SHRAddr+20,y
- sta |SHRAddr+22,y
- sta |SHRAddr+24,y
- sta |SHRAddr+26,y
- sta |SHRAddr+28,y
- sta |SHRAddr+30,y
- tya
- adc #32
- tay
- dex
- bne CA1
-
- phk
- plb
-
- Done ply
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Get key
- *
-
- GetKey start
-
- lda #9
- sta KeyStrb
-
- GK1 lda Keybrd
- and #$FF
- cmp #$80
- bcc GK1
-
- lda #0
- sta KeyStrb
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Mouse routine (Not working)
- *
- * Output MouseX : (-64 to 63)
- * MouseY : (-64 to 63)
- * MouseBtn: 0 (up) or 1 (down)
- *
-
- GetMouse start
-
- stz MouseX
- stz MouseY
- stz MouseBtn
-
- sep #$20
- short m
-
- lda KeyGLU If no data, then quit.
- bpl Done
-
- and #2 If X position is lost, then
- beq GM1 throw away the mouse data.
-
- lda Mouse
- bra Done
-
- GM1 lda Mouse
- and #$7F
- sta MouseX
-
- lda Mouse
- bpl GM2
- inc MouseBtn
-
- GM2 and #$7F
- sta MouseY
-
- Done rep #$20
- long m
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Delay
- *
- * Input Time: delay time (0..$FFFF)
- *
-
- Delay start
-
- phx
-
- ldx Time
-
- D1 dex
- bne D1
-
- plx
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Random number generator
- *
- * Output RndFlag: 0 or 1
- *
- * Note: Do not modify RndFlag.
- *
-
- Random start
- using SMData
-
- lda RndFlag
- bne R1
- clc
- bra R2
-
- R1 sec
- R2 ror RndSeed
- bcc R3
-
- lda #1
- sta RndFlag
- bra Done
-
- R3 stz RndFlag
-
- Done rts
-
- end
-
- *------------------------------------------------------
- *
- * Calculate address for screen scanlines
- *
-
- CalAddr start
- using AddrTbl
- using Address
-
- lda #1
- sta YAddr+2
-
- ldx #0
- lda #SHRAddr
- clc
-
- CYA1 sta AddrTbl,x
- adc #160
- inx
- inx
- cpx #400
- bcc CYA1
-
- ldx #0
- lda #0
- clc
-
- CYA2 sta Address,x
- adc #160
- inx
- inx
- cpx #400
- bcc CYA2
-
- rts
-
- end
-
- *------------------------------------------------------
- *
- * Super Hires address
- *
-
- AddrTbl data
-
- ds 400
-
- end
-
- Address data
-
- ds 400
-
- end
-
- *------------------------------------------------------
- *
- * 8 x 8 font
- *
-
- Font data
-
- dc h'00000000' Space
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'00FFF000' !
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'0FF0FF00' "
- dc h'0FF0FF00'
- dc h'0FF0FF00'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'0FF0FF00' #
- dc h'0FF0FF00'
- dc h'FFFFFFF0'
- dc h'0FF0FF00'
- dc h'FFFFFFF0'
- dc h'0FF0FF00'
- dc h'0FF0FF00'
- dc h'00000000'
-
- dc h'000FF000' $
- dc h'00FFFFF0'
- dc h'0F0FF000'
- dc h'00FFFF00'
- dc h'000FF0F0'
- dc h'0FFFFF00'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'00000000' %
- dc h'FF000FF0'
- dc h'FF00FF00'
- dc h'000FF000'
- dc h'00FF0000'
- dc h'0FF00FF0'
- dc h'FF000FF0'
- dc h'00000000'
-
- dc h'00FFFF00' &
- dc h'0FFF00F0'
- dc h'00FFF000'
- dc h'0FFF0000'
- dc h'0FFF0FF0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'000FF000' '
- dc h'000FF000'
- dc h'0000F000'
- dc h'000F0000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'0000FF00' (
- dc h'000FF000'
- dc h'00FF0000'
- dc h'00FF0000'
- dc h'00FF0000'
- dc h'000FF000'
- dc h'0000FF00'
- dc h'00000000'
-
- dc h'00FF0000' )
- dc h'000FF000'
- dc h'0000FF00'
- dc h'0000FF00'
- dc h'0000FF00'
- dc h'000FF000'
- dc h'00FF0000'
- dc h'00000000'
-
- dc h'000FF000' *
- dc h'0F0FF0F0'
- dc h'00FFFF00'
- dc h'0FFFFFF0'
- dc h'00FFFF00'
- dc h'0F0FF0F0'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'00000000' +
- dc h'000FF000'
- dc h'000FF000'
- dc h'0FFFFFF0'
- dc h'0FFFFFF0'
- dc h'000FF000'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'00000000' ,
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'000FF000'
- dc h'000FF000'
- dc h'0000F000'
- dc h'000F0000'
-
- dc h'00000000' -
- dc h'00000000'
- dc h'00000000'
- dc h'0FFFFFF0'
- dc h'0FFFFFF0'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'00000000' .
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'000FF000'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'000000FF' /
- dc h'00000FF0'
- dc h'0000FF00'
- dc h'000FF000'
- dc h'00FF0000'
- dc h'0FF00000'
- dc h'FF000000'
- dc h'00000000'
-
- dc h'00FFFF00' 0
- dc h'0FFF00F0'
- dc h'0FFF0FF0'
- dc h'0FFFF0F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00FFF000' 1
- dc h'0FFFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'00FFFF00' 2
- dc h'0F00FFF0'
- dc h'0000FFF0'
- dc h'00FFFF00'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFFFFF0'
- dc h'00000000'
-
- dc h'00FFFF00' 3
- dc h'0F00FFF0'
- dc h'0000FFF0'
- dc h'000FFF00'
- dc h'0000FFF0'
- dc h'0F00FFF0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'000FFF00' 4
- dc h'00FFFF00'
- dc h'0F0FFF00'
- dc h'F00FFF00'
- dc h'FFFFFFF0'
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'00000000'
-
- dc h'0FFFFFF0' 5
- dc h'0FF00000'
- dc h'0FFFFF00'
- dc h'0FFFFFF0'
- dc h'0000FFF0'
- dc h'0F00FFF0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00FFFF00' 6
- dc h'0FFF00F0'
- dc h'0FFF0000'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFFFFF0' 7
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00000000'
-
- dc h'00FFFF00' 8
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00FFFF00' 9
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'0000FFF0'
- dc h'0F00FFF0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00000000' :
- dc h'000FF000'
- dc h'000FF000'
- dc h'00000000'
- dc h'000FF000'
- dc h'000FF000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'00000000' ;
- dc h'000FF000'
- dc h'000FF000'
- dc h'00000000'
- dc h'000FF000'
- dc h'000FF000'
- dc h'0000F000'
- dc h'000F0000'
-
- dc h'0000FF00' <
- dc h'000FFF00'
- dc h'00FFF000'
- dc h'0FFF0000'
- dc h'00FFF000'
- dc h'000FFF00'
- dc h'0000FF00'
- dc h'00000000'
-
- dc h'00000000' =
- dc h'0FFFFFF0'
- dc h'0FFFFFF0'
- dc h'00000000'
- dc h'0FFFFFF0'
- dc h'0FFFFFF0'
- dc h'00000000'
- dc h'00000000'
-
- dc h'0FF00000' >
- dc h'0FFF0000'
- dc h'00FFF000'
- dc h'000FFF00'
- dc h'00FFF000'
- dc h'0FFF0000'
- dc h'0FF00000'
- dc h'00000000'
-
- dc h'00FFF000' ?
- dc h'0F0FFF00'
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'00FFF000'
- dc h'00000000'
- dc h'00FFF000'
- dc h'00000000'
-
- ds 32
-
- dc h'00FFFF00' A
- dc h'0FFFFFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'0FFFFFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00000000'
-
- dc h'0FFFFF00' B
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'00000000'
-
- dc h'00FFFF00' C
- dc h'0FFF00F0'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFFFF00' D
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'00000000'
-
- dc h'00FFFFF0' E
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFFFF00'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00FFFFF0'
- dc h'00000000'
-
- dc h'00FFFFF0' F
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFFFF00'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00000000'
-
- dc h'00FFFF00' G
- dc h'0FFF00F0'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0FF0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFF00F0' H
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFFF0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'00FFF000' I
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'0000FFF0' J
- dc h'0000FFF0'
- dc h'0000FFF0'
- dc h'0000FFF0'
- dc h'0000FFF0'
- dc h'0F00FFF0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFF00F0' K
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'0FFF0000' L
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFFFFF0'
- dc h'00000000'
-
- dc h'0FFFFF00' M
- dc h'FFFFFFF0'
- dc h'FFF0F0F0'
- dc h'FFF0F0F0'
- dc h'FFF0F0F0'
- dc h'FFF000F0'
- dc h'FFF000F0'
- dc h'00000000'
-
- dc h'00FFFF00' N
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'00FFFF00' O
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFFFF00' P
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00000000'
-
- dc h'00FFFF00' Q
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFFF0'
- dc h'000000FF'
-
- dc h'0FFFFF00' R
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'00FFFF00' S
- dc h'0FF000F0'
- dc h'0FFFF000'
- dc h'00FFFF00'
- dc h'000FFFF0'
- dc h'0F000FF0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFFFF00' T
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'0FFF00F0' U
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'0FFF00F0' V
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'F000FFF0' W
- dc h'F000FFF0'
- dc h'F0F0FFF0'
- dc h'F0F0FFF0'
- dc h'F0F0FFF0'
- dc h'FFFFFFF0'
- dc h'0F0FFF00'
- dc h'00000000'
-
- dc h'0FFF00F0' X
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00000000'
-
- dc h'FFF000F0' Y
- dc h'FFF000F0'
- dc h'FFF000F0'
- dc h'0FFFFF00'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'0FFFFFF0' Z
- dc h'0000FFF0'
- dc h'0000FF00'
- dc h'000FF000'
- dc h'00FF0000'
- dc h'0FFF0000'
- dc h'0FFFFFF0'
- dc h'00000000'
-
- ds 160
-
- dc h'000FF000' `
- dc h'000FF000'
- dc h'000F0000'
- dc h'0000F000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
- dc h'00000000'
-
- dc h'00000000' a
- dc h'00000000'
- dc h'00FFFF00'
- dc h'0000FFF0'
- dc h'00FFFFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'00000000'
-
- dc h'0FFF0000' b
- dc h'0FFF0000'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'00000000'
-
- dc h'00000000' c
- dc h'00000000'
- dc h'00FFFFF0'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00FFFFF0'
- dc h'00000000'
-
- dc h'0000FFF0' d
- dc h'0000FFF0'
- dc h'00FFFFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'00000000'
-
- dc h'00000000' e
- dc h'00000000'
- dc h'00FFFF00'
- dc h'0FFF00F0'
- dc h'0FFFFFF0'
- dc h'0FFF0000'
- dc h'0FFFFFF0'
- dc h'00000000'
-
- dc h'000FFF00' f
- dc h'00FFF0F0'
- dc h'00FFF000'
- dc h'0FFFFFF0'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'00000000' g
- dc h'00000000'
- dc h'00FFFFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'0000FFF0'
- dc h'0FFFFF00'
-
- dc h'0FFF0000' h
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'00FFF000' i
- dc h'00000000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'000FFF00' j
- dc h'00000000'
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'000FFF00'
- dc h'0F0FFF00'
- dc h'00FFF000'
-
- dc h'0FF00000' k
- dc h'0FF00F00'
- dc h'0FF00F00'
- dc h'0FFFF000'
- dc h'0F00FF00'
- dc h'0F00FF00'
- dc h'0F00FF00'
- dc h'00000000'
-
- dc h'00FFF000' l
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00000000'
-
- dc h'00000000' m
- dc h'00000000'
- dc h'FFFFFF00'
- dc h'FFF0F0F0'
- dc h'FFF0F0F0'
- dc h'FFF0F0F0'
- dc h'FFF000F0'
- dc h'00000000'
-
- dc h'00000000' n
- dc h'00000000'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00000000'
-
- dc h'00000000' o
- dc h'00000000'
- dc h'00FFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00000000' p
- dc h'00000000'
- dc h'0FFFFF00'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFFFF00'
- dc h'0FFF0000'
- dc h'0FFF0000'
-
- dc h'00000000' q
- dc h'00000000'
- dc h'00FFFFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'0000FFF0'
- dc h'0000FFF0'
-
- dc h'00000000' r
- dc h'00000000'
- dc h'00FFFF00'
- dc h'0FFF00F0'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'0FFF0000'
- dc h'00000000'
-
- dc h'00000000' s
- dc h'00000000'
- dc h'00FFFFF0'
- dc h'0FFF0000'
- dc h'00FFFF00'
- dc h'0000FFF0'
- dc h'0FFFFF00'
- dc h'00000000'
-
- dc h'00FFF000' t
- dc h'00FFF000'
- dc h'FFFFFFF0'
- dc h'00FFF000'
- dc h'00FFF000'
- dc h'00FFF0F0'
- dc h'000FFF00'
- dc h'00000000'
-
- dc h'00000000' u
- dc h'00000000'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'00000000'
-
- dc h'00000000' v
- dc h'00000000'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'000FF000'
- dc h'00000000'
-
- dc h'00000000' w
- dc h'00000000'
- dc h'F000FFF0'
- dc h'F0F0FFF0'
- dc h'F0F0FFF0'
- dc h'F0F0FFF0'
- dc h'0FFFFF00'
- dc h'00000000'
-
- dc h'00000000' x
- dc h'00000000'
- dc h'0FFF00F0'
- dc h'0FFF00F0'
- dc h'00FFFF00'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00000000'
-
- dc h'00000000' y
- dc h'00000000'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'0F00FFF0'
- dc h'00FFFFF0'
- dc h'0000FFF0'
- dc h'0FFFFF00'
-
- dc h'00000000' z
- dc h'00000000'
- dc h'0FFFFFF0'
- dc h'000FFF00'
- dc h'00FFF000'
- dc h'0FFF0000'
- dc h'0FFFFFF0'
- dc h'00000000'
-
- end
-
- *------------------------------------------------------
- *
- * Standard colour data
- *
-
- SColour data
-
- dc h'0000' 0: Black
- dc h'7707' 1: Dark Grey
- dc h'4108' 2: Brown
- dc h'2C07' 3: Purple
- dc h'0F00' 4: Blue
- dc h'8000' 5: Dark Green
- dc h'700F' 6: Orange
- dc h'000D' 7: Red
- dc h'A90F' 8: Beige (meat colour)
- dc h'F00F' 9: Yellow
- dc h'E000' A: Green
- dc h'DF04' B: Light Blue
- dc h'AF0D' C: Lilac (Light purple)
- dc h'8F07' D: Periwinkle
- dc h'CC0C' E: Light Grey
- dc h'FF0F' F: White
-
- end
-
- *------------------------------------------------------
- *
- * Super Magic parameter
- *
- * Note: Not to use the following parameters in the
- * program except for calling routines.
- *
-
- SMData data
-
- RndFlag dc h"1111"
- RndSeed dc b"0100010111000101"
-
- QuitData dc i4'0'
- dc i'0'
-
- end
-