1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-03 01:31:55 +00:00

New code from Karri

git-svn-id: svn://svn.cc65.org/cc65/trunk@3316 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2004-11-29 16:03:00 +00:00
parent 18b154e6b1
commit e506719f43
3 changed files with 75 additions and 31 deletions

View File

@ -12,5 +12,19 @@
.global __iodir: zp .global __iodir: zp
.global __viddma: zp .global __viddma: zp
.global __sprsys: zp .global __sprsys: zp
.global _abc_score_ptr0: zp
.global _abc_score_ptr1: zp
.global _abc_score_ptr2: zp
.global _abc_score_ptr3: zp
.global _FileEntry: zp
.global _FileStartBlock: zp
.global _FileBlockOffset: zp
.global _FileExecFlag: zp
.global _FileDestAddr: zp
.global _FileFileLen: zp
.global _FileCurrBlock: zp
.global _FileBlockByte: zp
.global _FileDestPtr: zp

View File

@ -16,4 +16,23 @@ __iodir: .res 1
__viddma: .res 1 __viddma: .res 1
__sprsys: .res 1 __sprsys: .res 1
; ------------------------------------------------------------------------
; sound effect pointers for multitimbral Lynx music hardware
_abc_score_ptr0: .res 2
_abc_score_ptr1: .res 2
_abc_score_ptr2: .res 2
_abc_score_ptr3: .res 2
; ------------------------------------------------------------------------
; Filesystem variables needed for reading stuff from the Lynx cart
_FileEntry: ; The file directory entry is 8 bytes
_FileStartBlock: .res 1
_FileBlockOffset: .res 2
_FileExecFlag: .res 1
_FileDestAddr: .res 2
_FileFileLen: .res 2
_FileCurrBlock: .res 1
_FileBlockByte: .res 2
_FileDestPtr: .res 2

View File

@ -13,17 +13,16 @@
; ;
.include "zeropage.inc" .include "zeropage.inc"
.include "extzp.inc"
.include "tgi-kernel.inc" .include "tgi-kernel.inc"
.include "tgi-mode.inc" .include "tgi-mode.inc"
.include "tgi-error.inc" .include "tgi-error.inc"
.include "lynx.inc" .include "lynx.inc"
.include "extzp.inc"
.macpack generic .macpack generic
; ------------------------------------------------------------------------ ; ------------------------------------------------------------------------
; Header. Includes jump table and constants. ; Header. Includes jump table and constants.
@ -42,14 +41,17 @@
.byte 8 ; System font Y size .byte 8 ; System font Y size
.res 4, $00 ; Reserved for future extensions .res 4, $00 ; Reserved for future extensions
; Next comes the jump table. All entries must be valid and may point to an RTS ; Next comes the jump table. Currently all entries must be valid and may point
; for test versions (function not implemented). ; to an RTS for test versions (function not implemented). A future version may
; allow for emulation: In this case the vector will be zero. Emulation means
; that the graphics kernel will emulate the function by using lower level
; primitives - for example ploting a line by using calls to SETPIXEL.
.addr INSTALL .addr INSTALL
.addr UNINSTALL .addr UNINSTALL
.addr INIT .addr INIT
.addr DONE .addr DONE
.addr GETERROR .addr GETERROR
.addr CONTROL .addr CONTROL
.addr CLEAR .addr CLEAR
.addr SETVIEWPAGE .addr SETVIEWPAGE
@ -67,6 +69,7 @@
.addr OUTTEXT .addr OUTTEXT
.addr 0 ; IRQ entry is unused .addr 0 ; IRQ entry is unused
; ------------------------------------------------------------------------ ; ------------------------------------------------------------------------
; Data. ; Data.
@ -323,6 +326,7 @@ CLEAR: lda #<cls_sprite
; from the new buffer. This is usually noticed by the user. ; from the new buffer. This is usually noticed by the user.
SETVIEWPAGE: SETVIEWPAGE:
cmp #1
beq @L1 ; page == maxpages-1 beq @L1 ; page == maxpages-1
ldy #<$de20 ; page 0 ldy #<$de20 ; page 0
ldx #>$de20 ldx #>$de20
@ -357,6 +361,7 @@ SETVIEWPAGE:
; ;
SETDRAWPAGE: SETDRAWPAGE:
cmp #1
beq @L1 ; page == maxpages-1 beq @L1 ; page == maxpages-1
lda #<$de20 ; page 0 lda #<$de20 ; page 0
ldx #>$de20 ldx #>$de20
@ -487,7 +492,13 @@ GETPIXEL:
sta ptr1+1 sta ptr1+1
ldx #0 ldx #0
lda #15
sta MAPCTL
lda (ptr1),y lda (ptr1),y
tay
lda #$0c
sta MAPCTL
tya
plp plp
bcc @L1 bcc @L1
and #$f and #$f
@ -506,8 +517,7 @@ GETPIXEL:
; Must set an error code: NO ; Must set an error code: NO
; ;
.data .data
line_sprite: line_sprite:
.byte 0 ; Will be replaced by the code .byte 0 ; Will be replaced by the code
.byte %00110000 .byte %00110000
@ -527,6 +537,7 @@ line_tilt:
line_c: line_c:
.byte $e .byte $e
.code
LINE: LINE:
lda DRAWINDEX lda DRAWINDEX
sta line_c sta line_c
@ -550,7 +561,7 @@ LINE:
lda Y1 lda Y1
ldx Y2 ldx Y2
sta Y2 sta Y2
stx Y1 stx Y1
lda Y1+1 lda Y1+1
ldx Y2+1 ldx Y2+1
sta Y2+1 sta Y2+1
@ -574,7 +585,7 @@ LINE:
lda #0 lda #0
sbc Y2+1 sbc Y2+1
sta Y2+1 sta Y2+1
lda #%00010000 ; Vertical flip lda #%00010000 ; Vertical flip
sta line_sprite sta line_sprite
@L2: @L2:
lda X1 lda X1
@ -598,7 +609,7 @@ LINE:
lda X2 lda X2
sbc X1 sbc X1
ina ina
sta MATHF sta MATHF
stz MATHE stz MATHE
@L3: @L3:
lda SPRSYS lda SPRSYS
@ -658,7 +669,7 @@ BAR: lda X1
lda X2 lda X2
sec sec
sbc X1 sbc X1
ina ina
sta bar_sx+1 sta bar_sx+1
lda Y2 lda Y2
sec sec
@ -684,7 +695,7 @@ BAR: lda X1
; To do a circle please add this to your C program ; To do a circle please add this to your C program
;int sintbl[9] = { ;int sintbl[9] = {
; 0, // 0 degrees ; 0, // 0 degrees
; 3196, // 11.25 degrees ; 3196, // 11.25 degrees
; 6270, // 22.5 degrees ; 6270, // 22.5 degrees
; 9102, // 33.75 degrees ; 9102, // 33.75 degrees
@ -780,7 +791,7 @@ OUTTEXT:
lda Y1+1 lda Y1+1
sta text_y+1 sta text_y+1
ldy #-1 ; Calculate string length ldy #-1 ; Calculate string length
@L2: @L2:
iny iny
lda (STRPTR),y lda (STRPTR),y
@ -882,25 +893,25 @@ text_c:
; The Font ; The Font
; 96 characters from ASCII 32 to 127 ; 96 characters from ASCII 32 to 127
; 8 pixels wide, 8 pixels high ; 8 pixels wide, 8 pixels high
; bit value 0 = foreground, bit value 1 = background / transparent ; bit value 0 = foreground, bit value 1 = background / transparent
font: font:
; VERSAIL ; VERSAIL
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ;32 .byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ;32
.byte $FF, $E7, $FF, $FF, $E7, $E7, $E7, $E7 ;33 .byte $FF, $E7, $FF, $FF, $E7, $E7, $E7, $E7 ;33
.byte $FF, $FF, $FF, $FF, $FF, $99, $99, $99 ;34 .byte $FF, $FF, $FF, $FF, $FF, $99, $99, $99 ;34
.byte $FF, $99, $99, $00, $99, $00, $99, $99 ;35 .byte $FF, $99, $99, $00, $99, $00, $99, $99 ;35
.byte $FF, $E7, $83, $F9, $C3, $9F, $C1, $E7 ;36 .byte $FF, $E7, $83, $F9, $C3, $9F, $C1, $E7 ;36
.byte $FF, $B9, $99, $CF, $E7, $F3, $99, $9D ;37 .byte $FF, $B9, $99, $CF, $E7, $F3, $99, $9D ;37
.byte $FF, $C0, $99, $98, $C7, $C3, $99, $C3 ;38 .byte $FF, $C0, $99, $98, $C7, $C3, $99, $C3 ;38
.byte $FF, $FF, $FF, $FF, $FF, $E7, $F3, $F9 ;39 .byte $FF, $FF, $FF, $FF, $FF, $E7, $F3, $F9 ;39
.byte $FF, $F3, $E7, $CF, $CF, $CF, $E7, $F3 ;40 .byte $FF, $F3, $E7, $CF, $CF, $CF, $E7, $F3 ;40
.byte $FF, $CF, $E7, $F3, $F3, $F3, $E7, $CF ;41 .byte $FF, $CF, $E7, $F3, $F3, $F3, $E7, $CF ;41
.byte $FF, $FF, $99, $C3, $00, $C3, $99, $FF ;42 .byte $FF, $FF, $99, $C3, $00, $C3, $99, $FF ;42
.byte $FF, $FF, $E7, $E7, $81, $E7, $E7, $FF ;43 .byte $FF, $FF, $E7, $E7, $81, $E7, $E7, $FF ;43
.byte $CF, $E7, $E7, $FF, $FF, $FF, $FF, $FF ;44 .byte $CF, $E7, $E7, $FF, $FF, $FF, $FF, $FF ;44
.byte $FF, $FF, $FF, $FF, $81, $FF, $FF, $FF ;45 .byte $FF, $FF, $FF, $FF, $81, $FF, $FF, $FF ;45
.byte $FF, $E7, $E7, $FF, $FF, $FF, $FF, $FF ;46 .byte $FF, $E7, $E7, $FF, $FF, $FF, $FF, $FF ;46
.byte $FF, $9F, $CF, $E7, $F3, $F9, $FC, $FF ;47 .byte $FF, $9F, $CF, $E7, $F3, $F9, $FC, $FF ;47
.byte $FF, $C3, $99, $99, $89, $91, $99, $C3 ;48 .byte $FF, $C3, $99, $99, $89, $91, $99, $C3 ;48
.byte $FF, $81, $E7, $E7, $E7, $C7, $E7, $E7 ;49 .byte $FF, $81, $E7, $E7, $E7, $C7, $E7, $E7 ;49
.byte $FF, $81, $9F, $CF, $F3, $F9, $99, $C3 ;50 .byte $FF, $81, $9F, $CF, $F3, $F9, $99, $C3 ;50
@ -924,7 +935,7 @@ font:
.byte $FF, $83, $99, $99, $83, $99, $99, $83 ;2 .byte $FF, $83, $99, $99, $83, $99, $99, $83 ;2
.byte $FF, $C3, $99, $9F, $9F, $9F, $99, $C3 ;3 .byte $FF, $C3, $99, $9F, $9F, $9F, $99, $C3 ;3
.byte $FF, $87, $93, $99, $99, $99, $93, $87 ;4 .byte $FF, $87, $93, $99, $99, $99, $93, $87 ;4
.byte $FF, $81, $9F, $9F, $87, $9F, $9F, $81 ;5 .byte $FF, $81, $9F, $9F, $87, $9F, $9F, $81 ;5
.byte $FF, $9F, $9F, $9F, $87, $9F, $9F, $81 ;6 .byte $FF, $9F, $9F, $9F, $87, $9F, $9F, $81 ;6
.byte $FF, $C3, $99, $99, $91, $9F, $99, $C3 ;7 .byte $FF, $C3, $99, $99, $91, $9F, $99, $C3 ;7
.byte $FF, $99, $99, $99, $81, $99, $99, $99 ;8 .byte $FF, $99, $99, $99, $81, $99, $99, $99 ;8