style fixes
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
[](http://travis-ci.org/cc65/cc65/builds)
|
[](http://travis-ci.org/cc65/cc65/builds)
|
||||||
|
|
||||||
|
Binary snapshot for [Windows](http://sourceforge.net/projects/cc65/files/cc65-snapshot-win32.zip)
|
||||||
|
|
||||||
cc65 is a complete cross development package for 65(C)02 systems, including
|
cc65 is a complete cross development package for 65(C)02 systems, including
|
||||||
a powerful macro assembler, a C compiler, linker, librarian and several
|
a powerful macro assembler, a C compiler, linker, librarian and several
|
||||||
other tools.
|
other tools.
|
||||||
@@ -23,6 +25,7 @@ including
|
|||||||
- the Atari 8 bit machines.
|
- the Atari 8 bit machines.
|
||||||
- the Atari 5200 console.
|
- the Atari 5200 console.
|
||||||
- GEOS for the C64, C128 and Apple //e.
|
- GEOS for the C64, C128 and Apple //e.
|
||||||
|
- the NEC PC-Engine
|
||||||
- the Nintendo Entertainment System (NES) console.
|
- the Nintendo Entertainment System (NES) console.
|
||||||
- the Supervision console.
|
- the Supervision console.
|
||||||
- the Oric Atmos.
|
- the Oric Atmos.
|
||||||
|
|||||||
@@ -2,44 +2,44 @@
|
|||||||
; PCE definitions. By Groepaz/Hitmem.
|
; PCE definitions. By Groepaz/Hitmem.
|
||||||
;
|
;
|
||||||
|
|
||||||
;; FIXME: optimize zeropage usage
|
; FIXME: optimize zeropage usage
|
||||||
|
CURS_X = $30
|
||||||
|
CURS_Y = $31
|
||||||
|
SCREEN_PTR = $32 ;2
|
||||||
|
CRAM_PTR = $34 ;2
|
||||||
|
CHARCOLOR = $36
|
||||||
|
RVS = $37
|
||||||
|
BGCOLOR = $38
|
||||||
|
tickcount = $39 ;4
|
||||||
|
|
||||||
CURS_X = $30
|
; FIXME: screen dimensions my change according to selected video mode
|
||||||
CURS_Y = $31
|
screenrows = (224/8)
|
||||||
SCREEN_PTR = $32 ;2
|
charsperline = 61
|
||||||
CRAM_PTR = $34 ;2
|
|
||||||
CHARCOLOR = $36
|
|
||||||
RVS = $37
|
|
||||||
BGCOLOR = $38
|
|
||||||
tickcount = $39 ;4
|
|
||||||
|
|
||||||
screenrows = (224/8)
|
CH_HLINE = 1
|
||||||
charsperline = 61
|
CH_VLINE = 2
|
||||||
|
|
||||||
CH_HLINE = 1
|
|
||||||
CH_VLINE = 2
|
|
||||||
|
|
||||||
; huc6270 - Video Display Controller (vdc)
|
; huc6270 - Video Display Controller (vdc)
|
||||||
|
|
||||||
VDC_MAWR = 0 ; Memory Address Write Register
|
VDC_MAWR = 0 ; Memory Address Write Register
|
||||||
VDC_MARR = 1 ; Memory Address Read Register
|
VDC_MARR = 1 ; Memory Address Read Register
|
||||||
VDC_VWR = 2 ; VRAM Write Register
|
VDC_VWR = 2 ; VRAM Write Register
|
||||||
VDC_VRR = 3 ; VRAM Read Register
|
VDC_VRR = 3 ; VRAM Read Register
|
||||||
VDC_CR = 4 ; Control Register
|
VDC_CR = 4 ; Control Register
|
||||||
VDC_RCR = 5 ; Raster Counter Register
|
VDC_RCR = 5 ; Raster Counter Register
|
||||||
VDC_BXR = 6 ; Background X-Scroll Register
|
VDC_BXR = 6 ; Background X-Scroll Register
|
||||||
VDC_BYR = 7 ; Background Y-Scroll Register
|
VDC_BYR = 7 ; Background Y-Scroll Register
|
||||||
VDC_MWR = 8 ; Memory-access Width Register
|
VDC_MWR = 8 ; Memory-access Width Register
|
||||||
VDC_HSR = 9 ; Horizontal Sync Register (?)
|
VDC_HSR = 9 ; Horizontal Sync Register (?)
|
||||||
VDC_HDR =10 ; Horizontal Display Register (?)
|
VDC_HDR = 10 ; Horizontal Display Register (?)
|
||||||
VDC_VPR =11 ; (unknown)
|
VDC_VPR = 11 ; (unknown)
|
||||||
VDC_VDW =12 ; (unknown use)
|
VDC_VDW = 12 ; (unknown use)
|
||||||
VDC_VCR =13 ; (unknown use)
|
VDC_VCR = 13 ; (unknown use)
|
||||||
VDC_DCR =14 ; (DMA) Control Register
|
VDC_DCR = 14 ; (DMA) Control Register
|
||||||
VDC_SOUR =15 ; (DMA) Source Register
|
VDC_SOUR = 15 ; (DMA) Source Register
|
||||||
VDC_DESR =16 ; (DMA) Destination Register
|
VDC_DESR = 16 ; (DMA) Destination Register
|
||||||
VDC_LENR =17 ; (DMA) Length Register
|
VDC_LENR = 17 ; (DMA) Length Register
|
||||||
VDC_SATB =18 ; Sprite Attribute Table
|
VDC_SATB = 18 ; Sprite Attribute Table
|
||||||
|
|
||||||
; VDC port
|
; VDC port
|
||||||
; Note: absolute addressing mode must be used when writing to this port
|
; Note: absolute addressing mode must be used when writing to this port
|
||||||
@@ -54,21 +54,21 @@ VDC_DATA_HI = $0003
|
|||||||
; bitmap of the palette data is this: 0000000gggrrrbbb.
|
; bitmap of the palette data is this: 0000000gggrrrbbb.
|
||||||
; You can read and write the DAC-registers.
|
; You can read and write the DAC-registers.
|
||||||
|
|
||||||
VCE = $0400 ; base
|
VCE = $0400 ; base
|
||||||
|
|
||||||
VCE_CTRL = $0400 ; write$00 to reset
|
VCE_CTRL = $0400 ; write$00 to reset
|
||||||
VCE_ADDR_LO = $0402 ; LSB of byte offset into palette
|
VCE_ADDR_LO = $0402 ; LSB of byte offset into palette
|
||||||
VCE_ADDR_HI = $0403 ; MSB of byte offset into palette
|
VCE_ADDR_HI = $0403 ; MSB of byte offset into palette
|
||||||
VCE_DATA_LO = $0404 ; LSB of 16-bit palette data
|
VCE_DATA_LO = $0404 ; LSB of 16-bit palette data
|
||||||
VCE_DATA_HI = $0405 ; MSB of 16-bit palette data
|
VCE_DATA_HI = $0405 ; MSB of 16-bit palette data
|
||||||
|
|
||||||
; programmable sound generator (PSG)
|
; programmable sound generator (PSG)
|
||||||
|
|
||||||
PSG = $0800 ; base
|
PSG = $0800 ; base
|
||||||
|
|
||||||
; timer
|
; timer
|
||||||
|
|
||||||
TIMER = $0c00 ; base
|
TIMER = $0c00 ; base
|
||||||
|
|
||||||
TIMER_COUNT = $0c00
|
TIMER_COUNT = $0c00
|
||||||
TIMER_CTRL = $0c01
|
TIMER_CTRL = $0c01
|
||||||
|
|||||||
@@ -36,20 +36,20 @@
|
|||||||
# error This module may only be used when compiling for the PCE!
|
# error This module may only be used when compiling for the PCE!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CH_HLINE 1
|
#define CH_HLINE 1
|
||||||
#define CH_VLINE 2
|
#define CH_VLINE 2
|
||||||
#define CH_CROSS 3
|
#define CH_CROSS 3
|
||||||
#define CH_ULCORNER 4
|
#define CH_ULCORNER 4
|
||||||
#define CH_URCORNER 5
|
#define CH_URCORNER 5
|
||||||
#define CH_LLCORNER 6
|
#define CH_LLCORNER 6
|
||||||
#define CH_LRCORNER 7
|
#define CH_LRCORNER 7
|
||||||
#define CH_TTEE 8
|
#define CH_TTEE 8
|
||||||
#define CH_BTEE 9
|
#define CH_BTEE 9
|
||||||
#define CH_LTEE 10
|
#define CH_LTEE 10
|
||||||
#define CH_RTEE 11
|
#define CH_RTEE 11
|
||||||
|
|
||||||
#define CH_ENTER 13
|
#define CH_ENTER 13
|
||||||
#define CH_PI 18
|
#define CH_PI 18
|
||||||
|
|
||||||
/* Color defines (CBM compatible, for conio) */
|
/* Color defines (CBM compatible, for conio) */
|
||||||
#define COLOR_BLACK 0x00
|
#define COLOR_BLACK 0x00
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
#define DYN_DRV 0
|
#define DYN_DRV 0
|
||||||
|
|
||||||
/* The addresses of the static drivers */
|
/* The addresses of the static drivers */
|
||||||
extern void pce_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
|
extern void pce_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
|
||||||
|
|
||||||
#define JOY_FIRE_B 5
|
#define JOY_FIRE_B 5
|
||||||
#define JOY_SELECT 6
|
#define JOY_SELECT 6
|
||||||
@@ -87,7 +87,7 @@ void waitvblank (void);
|
|||||||
/* Wait for the vertical blanking */
|
/* Wait for the vertical blanking */
|
||||||
|
|
||||||
/* NOTE: all PCE are NTSC */
|
/* NOTE: all PCE are NTSC */
|
||||||
#define get_tv() TV_NTSC
|
#define get_tv() TV_NTSC
|
||||||
/* Return the video mode the machine is using. */
|
/* Return the video mode the machine is using. */
|
||||||
|
|
||||||
/* End of pce.h */
|
/* End of pce.h */
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
;
|
;
|
||||||
; Screen size variables
|
; Screen size variables
|
||||||
;
|
;
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export screensize
|
.export screensize
|
||||||
screensize:
|
screensize:
|
||||||
ldx xsize
|
ldx xsize
|
||||||
ldy ysize
|
ldy ysize
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; FIXME: changing the video mode allows for different screen sizes
|
; FIXME: changing the video mode allows for different screen sizes
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
.export xsize, ysize
|
.export xsize, ysize
|
||||||
|
|
||||||
xsize: .byte charsperline
|
xsize: .byte charsperline
|
||||||
ysize: .byte screenrows
|
ysize: .byte screenrows
|
||||||
|
|||||||
@@ -2,30 +2,29 @@
|
|||||||
; clock_t clock (void);
|
; clock_t clock (void);
|
||||||
;
|
;
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export _clock
|
.export _clock
|
||||||
.importzp sreg
|
.importzp sreg
|
||||||
;; .importzp tickcount
|
|
||||||
|
|
||||||
.proc _clock
|
.proc _clock
|
||||||
|
|
||||||
lda tickcount+3
|
lda tickcount+3
|
||||||
sta sreg+1
|
sta sreg+1
|
||||||
lda tickcount+2
|
lda tickcount+2
|
||||||
sta sreg
|
sta sreg
|
||||||
ldx tickcount+1
|
ldx tickcount+1
|
||||||
lda tickcount
|
lda tickcount
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
.constructor initclock, 24
|
.constructor initclock, 24
|
||||||
|
|
||||||
initclock:
|
initclock:
|
||||||
lda #0
|
lda #0
|
||||||
ldx #3
|
ldx #3
|
||||||
@lp: sta tickcount,x
|
@lp: sta tickcount,x
|
||||||
dex
|
dex
|
||||||
bpl @lp
|
bpl @lp
|
||||||
rts
|
rts
|
||||||
|
|||||||
@@ -1,30 +1,32 @@
|
|||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export _clrscr
|
.export _clrscr
|
||||||
_clrscr:
|
_clrscr:
|
||||||
|
|
||||||
st0 #VDC_MAWR
|
st0 #VDC_MAWR
|
||||||
st1 #<$0000
|
st1 #<$0000
|
||||||
st2 #>$0000
|
st2 #>$0000
|
||||||
|
|
||||||
st0 #VDC_VWR
|
st0 #VDC_VWR
|
||||||
ldy #$40
|
ldy #$40
|
||||||
rowloop: ldx #$80
|
rowloop:
|
||||||
colloop: lda #' '
|
ldx #$80
|
||||||
sta a:VDC_DATA_LO
|
colloop:
|
||||||
lda #$02
|
lda #' '
|
||||||
sta a:VDC_DATA_HI
|
sta a:VDC_DATA_LO
|
||||||
|
lda #$02
|
||||||
|
sta a:VDC_DATA_HI
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne colloop
|
bne colloop
|
||||||
dey
|
dey
|
||||||
bne rowloop
|
bne rowloop
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|||||||
@@ -5,59 +5,60 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
.export _textcolor, _bgcolor, _bordercolor
|
.export _textcolor, _bgcolor, _bordercolor
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
_textcolor:
|
_textcolor:
|
||||||
ldx CHARCOLOR ; get old value
|
ldx CHARCOLOR ; get old value
|
||||||
sta CHARCOLOR ; set new value
|
sta CHARCOLOR ; set new value
|
||||||
txa
|
txa
|
||||||
rts
|
rts
|
||||||
|
|
||||||
_bgcolor:
|
_bgcolor:
|
||||||
ldx BGCOLOR ; get old value
|
ldx BGCOLOR ; get old value
|
||||||
sta BGCOLOR ; set new value
|
sta BGCOLOR ; set new value
|
||||||
asl a
|
asl a
|
||||||
tay
|
tay
|
||||||
|
|
||||||
stz VCE_ADDR_LO
|
stz VCE_ADDR_LO
|
||||||
stz VCE_ADDR_HI
|
stz VCE_ADDR_HI
|
||||||
lda colors,y
|
lda colors,y
|
||||||
sta VCE_DATA_LO
|
sta VCE_DATA_LO
|
||||||
lda colors+1,y
|
lda colors+1,y
|
||||||
sta VCE_DATA_HI
|
sta VCE_DATA_HI
|
||||||
|
|
||||||
txa
|
txa
|
||||||
rts
|
rts
|
||||||
|
|
||||||
_bordercolor:
|
_bordercolor:
|
||||||
lda #0
|
lda #0
|
||||||
txa
|
txa
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.export colors
|
.export colors
|
||||||
|
|
||||||
colors: ; G R B
|
colors:
|
||||||
.word ((0<<6)+(0<<3)+(0)) ; 0 black
|
; G R B
|
||||||
.word ((7<<6)+(7<<3)+(7)) ; 1 white
|
.word ((0<<6)+(0<<3)+(0)) ; 0 black
|
||||||
.word ((0<<6)+(7<<3)+(0)) ; 2 red
|
.word ((7<<6)+(7<<3)+(7)) ; 1 white
|
||||||
.word ((7<<6)+(0<<3)+(7)) ; 3 cyan
|
.word ((0<<6)+(7<<3)+(0)) ; 2 red
|
||||||
.word ((0<<6)+(5<<3)+(7)) ; 4 violett
|
.word ((7<<6)+(0<<3)+(7)) ; 3 cyan
|
||||||
.word ((7<<6)+(0<<3)+(0)) ; 5 green
|
.word ((0<<6)+(5<<3)+(7)) ; 4 violett
|
||||||
.word ((0<<6)+(0<<3)+(7)) ; 6 blue
|
.word ((7<<6)+(0<<3)+(0)) ; 5 green
|
||||||
.word ((7<<6)+(7<<3)+(0)) ; 7 yellow
|
.word ((0<<6)+(0<<3)+(7)) ; 6 blue
|
||||||
.word ((5<<6)+(7<<3)+(0)) ; 8 orange
|
.word ((7<<6)+(7<<3)+(0)) ; 7 yellow
|
||||||
.word ((3<<6)+(4<<3)+(3)) ; 9 brown
|
.word ((5<<6)+(7<<3)+(0)) ; 8 orange
|
||||||
.word ((4<<6)+(7<<3)+(4)) ; a light red
|
.word ((3<<6)+(4<<3)+(3)) ; 9 brown
|
||||||
.word ((3<<6)+(3<<3)+(3)) ; b dark grey
|
.word ((4<<6)+(7<<3)+(4)) ; a light red
|
||||||
.word ((4<<6)+(4<<3)+(4)) ; c middle grey
|
.word ((3<<6)+(3<<3)+(3)) ; b dark grey
|
||||||
.word ((7<<6)+(4<<3)+(4)) ; d light green
|
.word ((4<<6)+(4<<3)+(4)) ; c middle grey
|
||||||
.word ((4<<6)+(4<<3)+(7)) ; e light blue
|
.word ((7<<6)+(4<<3)+(4)) ; d light green
|
||||||
.word ((6<<6)+(6<<3)+(6)) ; f light gray
|
.word ((4<<6)+(4<<3)+(7)) ; e light blue
|
||||||
|
.word ((6<<6)+(6<<3)+(6)) ; f light gray
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|||||||
@@ -1,121 +1,123 @@
|
|||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.import vce_init
|
.import vce_init
|
||||||
.import psg_init
|
.import psg_init
|
||||||
.import vdc_init
|
.import vdc_init
|
||||||
|
|
||||||
.constructor initconio, 24
|
.constructor initconio, 24
|
||||||
|
|
||||||
|
.macpack longbranch
|
||||||
|
|
||||||
.macpack longbranch
|
|
||||||
initconio:
|
initconio:
|
||||||
;; jsr vdc_init
|
jsr vce_init
|
||||||
jsr vce_init
|
jsr psg_init
|
||||||
jsr psg_init
|
jsr conio_init
|
||||||
jsr conio_init
|
jsr set_palette
|
||||||
jsr set_palette
|
|
||||||
|
|
||||||
st0 #VDC_RCR
|
st0 #VDC_RCR
|
||||||
st1 #<$0088
|
st1 #<$0088
|
||||||
st2 #>$0088
|
st2 #>$0088
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.import colors
|
.import colors
|
||||||
set_palette:
|
set_palette:
|
||||||
stz VCE_ADDR_LO
|
stz VCE_ADDR_LO
|
||||||
stz VCE_ADDR_HI
|
stz VCE_ADDR_HI
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
@lp:
|
@lp:
|
||||||
ldy #16
|
ldy #16
|
||||||
@lp1:
|
@lp1:
|
||||||
lda colors,x
|
lda colors,x
|
||||||
sta VCE_DATA_LO
|
sta VCE_DATA_LO
|
||||||
lda colors+1,x
|
lda colors+1,x
|
||||||
sta VCE_DATA_HI
|
sta VCE_DATA_HI
|
||||||
dey
|
dey
|
||||||
bne @lp1
|
bne @lp1
|
||||||
|
|
||||||
inx
|
inx
|
||||||
inx
|
inx
|
||||||
cpx #16*2
|
cpx #16*2
|
||||||
jne @lp
|
jne @lp
|
||||||
|
|
||||||
stz VCE_ADDR_LO
|
stz VCE_ADDR_LO
|
||||||
stz VCE_ADDR_HI
|
stz VCE_ADDR_HI
|
||||||
stz VCE_DATA_LO
|
stz VCE_DATA_LO
|
||||||
stz VCE_DATA_HI
|
stz VCE_DATA_HI
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
;
|
;
|
||||||
;----------------------------------------------------------------------------
|
;----------------------------------------------------------------------------
|
||||||
|
|
||||||
.importzp ptr1, tmp1
|
.importzp ptr1, tmp1
|
||||||
conio_init:
|
conio_init:
|
||||||
; Load font
|
; Load font
|
||||||
st0 #VDC_MAWR
|
st0 #VDC_MAWR
|
||||||
st1 #<$2000
|
st1 #<$2000
|
||||||
st2 #>$2000
|
st2 #>$2000
|
||||||
|
|
||||||
; ptr to font data
|
; ptr to font data
|
||||||
lda #<font
|
lda #<font
|
||||||
sta ptr1
|
sta ptr1
|
||||||
lda #>font
|
lda #>font
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
|
|
||||||
st0 #VDC_VWR ; VWR
|
st0 #VDC_VWR ; VWR
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta tmp1
|
sta tmp1
|
||||||
jsr copy
|
jsr copy
|
||||||
|
|
||||||
lda #<font
|
lda #<font
|
||||||
sta ptr1
|
sta ptr1
|
||||||
lda #>font
|
lda #>font
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta tmp1
|
sta tmp1
|
||||||
jsr copy
|
jsr copy
|
||||||
|
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
stx BGCOLOR
|
stx BGCOLOR
|
||||||
inx
|
inx
|
||||||
stx CHARCOLOR
|
stx CHARCOLOR
|
||||||
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
copy:
|
copy:
|
||||||
ldy #$80 ; 128 chars
|
ldy #$80 ; 128 chars
|
||||||
charloop: ldx #$08 ; 8 bytes/char
|
charloop:
|
||||||
|
ldx #$08 ; 8 bytes/char
|
||||||
lineloop:
|
lineloop:
|
||||||
lda (ptr1)
|
lda (ptr1)
|
||||||
eor tmp1
|
eor tmp1
|
||||||
sta a:VDC_DATA_LO ; bitplane 0
|
sta a:VDC_DATA_LO ; bitplane 0
|
||||||
stz a:VDC_DATA_HI ; bitplane 1
|
stz a:VDC_DATA_HI ; bitplane 1
|
||||||
|
|
||||||
clc ; increment font pointer
|
clc ; increment font pointer
|
||||||
lda ptr1
|
lda ptr1
|
||||||
adc #$01
|
adc #$01
|
||||||
sta ptr1
|
sta ptr1
|
||||||
lda ptr1+1
|
lda ptr1+1
|
||||||
adc #$00
|
adc #$00
|
||||||
sta ptr1+1
|
sta ptr1+1
|
||||||
dex
|
dex
|
||||||
bne lineloop ; next bitplane 0 byte
|
bne lineloop ; next bitplane 0 byte
|
||||||
ldx #$08 ; fill bitplane 2/3 with 0
|
ldx #$08 ; fill bitplane 2/3 with 0
|
||||||
fillloop: st1 #$00
|
fillloop:
|
||||||
st2 #$00
|
st1 #$00
|
||||||
dex
|
st2 #$00
|
||||||
bne fillloop ; next byte
|
dex
|
||||||
dey
|
bne fillloop ; next byte
|
||||||
bne charloop ; next character
|
dey
|
||||||
|
bne charloop ; next character
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
font:
|
font:
|
||||||
.include "vga.inc"
|
.include "vga.inc"
|
||||||
|
|||||||
@@ -3,97 +3,96 @@
|
|||||||
; void cputc (char c);
|
; void cputc (char c);
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _cputcxy, _cputc, cputdirect, putchar
|
.export _cputcxy, _cputc, cputdirect, putchar
|
||||||
.export newline, plot
|
.export newline, plot
|
||||||
.import popa, _gotoxy
|
.import popa, _gotoxy
|
||||||
.import PLOT
|
.import PLOT
|
||||||
.import xsize
|
.import xsize
|
||||||
|
|
||||||
.importzp tmp3,tmp4
|
.importzp tmp3,tmp4
|
||||||
|
|
||||||
|
.include "pce.inc"
|
||||||
|
|
||||||
.include "pce.inc"
|
|
||||||
_cputcxy:
|
_cputcxy:
|
||||||
pha ; Save C
|
pha ; Save C
|
||||||
jsr popa ; Get Y
|
jsr popa ; Get Y
|
||||||
jsr _gotoxy ; Set cursor, drop x
|
jsr _gotoxy ; Set cursor, drop x
|
||||||
pla ; Restore C
|
pla ; Restore C
|
||||||
|
|
||||||
; Plot a character - also used as internal function
|
; Plot a character - also used as internal function
|
||||||
|
|
||||||
_cputc: cmp #$0d ; CR?
|
_cputc: cmp #$0d ; CR?
|
||||||
bne L1
|
bne L1
|
||||||
lda #0
|
lda #0
|
||||||
sta CURS_X
|
sta CURS_X
|
||||||
beq plot ; Recalculate pointers
|
beq plot ; Recalculate pointers
|
||||||
|
|
||||||
L1: cmp #$0a ; LF?
|
L1: cmp #$0a ; LF?
|
||||||
beq newline ; Recalculate pointers
|
beq newline ; Recalculate pointers
|
||||||
|
|
||||||
; Printable char of some sort
|
; Printable char of some sort
|
||||||
|
|
||||||
cputdirect:
|
cputdirect:
|
||||||
jsr putchar ; Write the character to the screen
|
jsr putchar ; Write the character to the screen
|
||||||
|
|
||||||
; Advance cursor position
|
; Advance cursor position
|
||||||
|
|
||||||
advance:
|
advance:
|
||||||
ldy CURS_X
|
ldy CURS_X
|
||||||
iny
|
iny
|
||||||
cpy xsize
|
cpy xsize
|
||||||
bne L3
|
bne L3
|
||||||
jsr newline ; new line
|
jsr newline ; new line
|
||||||
ldy #0 ; + cr
|
ldy #0 ; + cr
|
||||||
L3: sty CURS_X
|
L3: sty CURS_X
|
||||||
jmp plot
|
jmp plot
|
||||||
|
|
||||||
newline:
|
newline:
|
||||||
inc CURS_Y
|
inc CURS_Y
|
||||||
|
|
||||||
; Set cursor position, calculate RAM pointers
|
; Set cursor position, calculate RAM pointers
|
||||||
|
|
||||||
plot: ldy CURS_X
|
plot: ldy CURS_X
|
||||||
ldx CURS_Y
|
ldx CURS_Y
|
||||||
clc
|
clc
|
||||||
jmp PLOT ; Set the new cursor
|
jmp PLOT ; Set the new cursor
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Write one character to the screen without doing anything else, return X
|
; Write one character to the screen without doing anything else, return X
|
||||||
; position in Y
|
; position in Y
|
||||||
|
|
||||||
putchar:
|
putchar:
|
||||||
|
|
||||||
ora RVS ; Set revers bit
|
ora RVS ; Set revers bit
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
st0 #VDC_MAWR ; Memory Adress Write
|
st0 #VDC_MAWR ; Memory Adress Write
|
||||||
|
|
||||||
lda SCREEN_PTR
|
lda SCREEN_PTR
|
||||||
sta a:VDC_DATA_LO
|
sta a:VDC_DATA_LO
|
||||||
|
|
||||||
lda SCREEN_PTR+1
|
lda SCREEN_PTR + 1
|
||||||
sta a:VDC_DATA_HI
|
sta a:VDC_DATA_HI
|
||||||
|
|
||||||
st0 #VDC_VWR ; VWR
|
st0 #VDC_VWR ; VWR
|
||||||
|
|
||||||
txa
|
txa
|
||||||
sta a:VDC_DATA_LO ; character
|
sta a:VDC_DATA_LO ; character
|
||||||
|
|
||||||
lda CHARCOLOR
|
lda CHARCOLOR
|
||||||
|
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
|
|
||||||
ora #$02
|
ora #$02
|
||||||
sta a:VDC_DATA_HI
|
sta a:VDC_DATA_HI
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|||||||
@@ -7,153 +7,155 @@
|
|||||||
; This must be the *first* file on the linker command line
|
; This must be the *first* file on the linker command line
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _exit
|
.export _exit
|
||||||
.export __STARTUP__ : absolute = 1 ; Mark as startup
|
.export __STARTUP__ : absolute = 1 ; Mark as startup
|
||||||
|
|
||||||
.import initlib, donelib
|
.import initlib, donelib
|
||||||
.import push0, _main, zerobss
|
.import push0, _main, zerobss
|
||||||
.import initheap
|
.import initheap
|
||||||
.import tmp1,tmp2,tmp3
|
.import tmp1,tmp2,tmp3
|
||||||
|
|
||||||
; Linker generated
|
; Linker generated
|
||||||
.import __RAM_START__, __RAM_SIZE__
|
.import __RAM_START__, __RAM_SIZE__
|
||||||
.import __ROM0_START__, __ROM0_SIZE__
|
.import __ROM0_START__, __ROM0_SIZE__
|
||||||
.import __ROM_START__, __ROM_SIZE__
|
.import __ROM_START__, __ROM_SIZE__
|
||||||
.import __STARTUP_LOAD__,__STARTUP_RUN__, __STARTUP_SIZE__
|
.import __STARTUP_LOAD__,__STARTUP_RUN__, __STARTUP_SIZE__
|
||||||
.import __CODE_LOAD__,__CODE_RUN__, __CODE_SIZE__
|
.import __CODE_LOAD__,__CODE_RUN__, __CODE_SIZE__
|
||||||
.import __RODATA_LOAD__,__RODATA_RUN__, __RODATA_SIZE__
|
.import __RODATA_LOAD__,__RODATA_RUN__, __RODATA_SIZE__
|
||||||
.import __DATA_LOAD__,__DATA_RUN__, __DATA_SIZE__
|
.import __DATA_LOAD__,__DATA_RUN__, __DATA_SIZE__
|
||||||
.import __BSS_SIZE__
|
.import __BSS_SIZE__
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.importzp sp
|
.importzp sp
|
||||||
.importzp ptr1,ptr2
|
.importzp ptr1,ptr2
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Place the startup code in a special segment.
|
; Place the startup code in a special segment.
|
||||||
|
|
||||||
.segment "STARTUP"
|
.segment "STARTUP"
|
||||||
|
|
||||||
start:
|
start:
|
||||||
|
|
||||||
; setup the CPU and System-IRQ
|
; setup the CPU and System-IRQ
|
||||||
|
|
||||||
; Initialize CPU
|
; Initialize CPU
|
||||||
|
|
||||||
sei
|
sei
|
||||||
nop
|
nop
|
||||||
csh ; set high speed CPU mode
|
csh ; set high speed CPU mode
|
||||||
nop
|
nop
|
||||||
cld
|
cld
|
||||||
nop
|
nop
|
||||||
|
|
||||||
; Setup stack and memory mapping
|
; Setup stack and memory mapping
|
||||||
ldx #$FF ; Stack top ($21FF)
|
ldx #$FF ; Stack top ($21FF)
|
||||||
txs
|
txs
|
||||||
|
|
||||||
; at startup all MPRs are set to 0, so init them
|
; at startup all MPRs are set to 0, so init them
|
||||||
lda #$ff
|
lda #$ff
|
||||||
tam #%00000001 ; 0000-1FFF = Hardware page
|
tam #%00000001 ; 0000-1FFF = Hardware page
|
||||||
lda #$F8
|
lda #$F8
|
||||||
tam #%00000010 ; 2000-3FFF = Work RAM
|
tam #%00000010 ; 2000-3FFF = Work RAM
|
||||||
;lda #$F7
|
|
||||||
;tam #%00000100 ; 4000-5FFF = Save RAM
|
|
||||||
;lda #1
|
|
||||||
;tam #%00001000 ; 6000-7FFF Page 2
|
|
||||||
;lda #2
|
|
||||||
;tam #%00010000 ; 8000-9FFF Page 3
|
|
||||||
;lda #3
|
|
||||||
;tam #%00100000 ; A000-BFFF Page 4
|
|
||||||
;lda #4
|
|
||||||
;tam #%01000000 ; C000-DFFF Page 5
|
|
||||||
;lda #0
|
|
||||||
;tam #%10000000 ; e000-fFFF hucard/syscard bank 0
|
|
||||||
|
|
||||||
; Clear work RAM (2000-3FFF)
|
; FIXME: setup a larger block of memory to use with C-code
|
||||||
stz <$00
|
;lda #$F7
|
||||||
tii $2000, $2001, $1FFF
|
;tam #%00000100 ; 4000-5FFF = Save RAM
|
||||||
|
;lda #1
|
||||||
|
;tam #%00001000 ; 6000-7FFF Page 2
|
||||||
|
;lda #2
|
||||||
|
;tam #%00010000 ; 8000-9FFF Page 3
|
||||||
|
;lda #3
|
||||||
|
;tam #%00100000 ; A000-BFFF Page 4
|
||||||
|
;lda #4
|
||||||
|
;tam #%01000000 ; C000-DFFF Page 5
|
||||||
|
;lda #0
|
||||||
|
;tam #%10000000 ; e000-fFFF hucard/syscard bank 0
|
||||||
|
|
||||||
; Initialize hardware
|
; Clear work RAM (2000-3FFF)
|
||||||
stz TIMER_COUNT ; Timer off
|
stz <$00
|
||||||
lda #$07
|
tii $2000, $2001, $1FFF
|
||||||
sta IRQ_MASK ; Interrupts off
|
|
||||||
stz IRQ_STATUS ; Acknowledge timer
|
|
||||||
|
|
||||||
;; FIXME; i dont know why the heck this one doesnt work when called from a constructor :/
|
; Initialize hardware
|
||||||
.import vdc_init
|
stz TIMER_COUNT ; Timer off
|
||||||
jsr vdc_init
|
lda #$07
|
||||||
|
sta IRQ_MASK ; Interrupts off
|
||||||
|
stz IRQ_STATUS ; Acknowledge timer
|
||||||
|
|
||||||
; Turn on background and VD interrupt/IRQ1
|
; FIXME; i dont know why the heck this one doesnt work when called from a constructor :/
|
||||||
lda #$05
|
.import vdc_init
|
||||||
sta IRQ_MASK ; IRQ1=on
|
jsr vdc_init
|
||||||
|
|
||||||
; Clear the BSS data
|
; Turn on background and VD interrupt/IRQ1
|
||||||
jsr zerobss
|
lda #$05
|
||||||
|
sta IRQ_MASK ; IRQ1=on
|
||||||
|
|
||||||
; Copy the .data segment to RAM
|
; Clear the BSS data
|
||||||
lda #<(__DATA_LOAD__)
|
jsr zerobss
|
||||||
sta ptr1
|
|
||||||
lda #>(__DATA_LOAD__)
|
|
||||||
sta ptr1+1
|
|
||||||
lda #<(__DATA_RUN__)
|
|
||||||
sta ptr2
|
|
||||||
lda #>(__DATA_RUN__)
|
|
||||||
sta ptr2+1
|
|
||||||
|
|
||||||
ldx #>(__DATA_SIZE__)
|
; Copy the .data segment to RAM
|
||||||
|
lda #<(__DATA_LOAD__)
|
||||||
|
sta ptr1
|
||||||
|
lda #>(__DATA_LOAD__)
|
||||||
|
sta ptr1+1
|
||||||
|
lda #<(__DATA_RUN__)
|
||||||
|
sta ptr2
|
||||||
|
lda #>(__DATA_RUN__)
|
||||||
|
sta ptr2+1
|
||||||
|
|
||||||
|
ldx #>(__DATA_SIZE__)
|
||||||
@l2:
|
@l2:
|
||||||
beq @s1 ; no more full pages
|
beq @s1 ; no more full pages
|
||||||
|
|
||||||
; copy one page
|
; copy one page
|
||||||
ldy #0
|
ldy #0
|
||||||
@l1:
|
@l1:
|
||||||
lda (ptr1),y
|
lda (ptr1),y
|
||||||
sta (ptr2),y
|
sta (ptr2),y
|
||||||
iny
|
iny
|
||||||
bne @l1
|
bne @l1
|
||||||
|
|
||||||
inc ptr1+1
|
inc ptr1+1
|
||||||
inc ptr2+1
|
inc ptr2+1
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne @l2
|
bne @l2
|
||||||
|
|
||||||
; copy remaining bytes
|
; copy remaining bytes
|
||||||
@s1:
|
@s1:
|
||||||
; copy one page
|
; copy one page
|
||||||
ldy #0
|
ldy #0
|
||||||
@l3:
|
@l3:
|
||||||
lda (ptr1),y
|
lda (ptr1),y
|
||||||
sta (ptr2),y
|
sta (ptr2),y
|
||||||
iny
|
iny
|
||||||
cpy #<(__DATA_SIZE__)
|
cpy #<(__DATA_SIZE__)
|
||||||
bne @l3
|
bne @l3
|
||||||
|
|
||||||
; setup the stack
|
; setup the stack
|
||||||
lda #<(__RAM_START__+__RAM_SIZE__)
|
lda #<(__RAM_START__+__RAM_SIZE__)
|
||||||
sta sp
|
sta sp
|
||||||
lda #>(__RAM_START__+__RAM_SIZE__)
|
lda #>(__RAM_START__+__RAM_SIZE__)
|
||||||
sta sp+1
|
sta sp + 1
|
||||||
|
|
||||||
; Call module constructors
|
; Call module constructors
|
||||||
jsr initlib
|
jsr initlib
|
||||||
|
|
||||||
cli ; allow IRQ only after constructors have run
|
cli ; allow IRQ only after constructors have run
|
||||||
|
|
||||||
; Pass an empty command line
|
; Pass an empty command line
|
||||||
jsr push0 ; argc
|
jsr push0 ; argc
|
||||||
jsr push0 ; argv
|
jsr push0 ; argv
|
||||||
|
|
||||||
ldy #4 ; Argument size
|
ldy #4 ; Argument size
|
||||||
jsr _main ; call the users code
|
jsr _main ; call the users code
|
||||||
|
|
||||||
; Call module destructors. This is also the _exit entry.
|
; Call module destructors. This is also the _exit entry.
|
||||||
_exit:
|
_exit:
|
||||||
jsr donelib ; Run module destructors
|
jsr donelib ; Run module destructors
|
||||||
|
|
||||||
; reset the PCEngine (start over)
|
; reset the PCEngine (start over)
|
||||||
jmp start
|
jmp start
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; System V-Blank Interupt
|
; System V-Blank Interupt
|
||||||
@@ -161,45 +163,45 @@ _exit:
|
|||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
_irq1:
|
_irq1:
|
||||||
pha
|
pha
|
||||||
phx
|
phx
|
||||||
phy
|
phy
|
||||||
|
|
||||||
|
; increment the system tick counter
|
||||||
inc tickcount
|
inc tickcount
|
||||||
bne @s1
|
bne @s1
|
||||||
inc tickcount+1
|
inc tickcount + 1
|
||||||
bne @s1
|
bne @s1
|
||||||
inc tickcount+2
|
inc tickcount + 2
|
||||||
bne @s1
|
bne @s1
|
||||||
inc tickcount+3
|
inc tickcount + 3
|
||||||
@s1:
|
@s1:
|
||||||
; Acknowlege interrupt
|
; Acknowlege interrupt
|
||||||
lda a:VDC_CTRL
|
lda a:VDC_CTRL
|
||||||
|
|
||||||
ply
|
ply
|
||||||
plx
|
plx
|
||||||
pla
|
pla
|
||||||
rti
|
rti
|
||||||
_irq2:
|
_irq2:
|
||||||
rti
|
rti
|
||||||
_nmi:
|
_nmi:
|
||||||
rti
|
rti
|
||||||
_timer:
|
_timer:
|
||||||
stz IRQ_STATUS
|
stz IRQ_STATUS
|
||||||
rti
|
rti
|
||||||
|
|
||||||
.export initmainargs
|
.export initmainargs
|
||||||
initmainargs:
|
initmainargs:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; hardware vectors
|
; hardware vectors
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
.segment "VECTORS"
|
.segment "VECTORS"
|
||||||
|
|
||||||
.word _irq2 ; $fff6 IRQ2 (External IRQ, BRK)
|
.word _irq2 ; $fff6 IRQ2 (External IRQ, BRK)
|
||||||
.word _irq1 ; $fff8 IRQ1 (VDC)
|
.word _irq1 ; $fff8 IRQ1 (VDC)
|
||||||
.word _timer ; $fffa Timer
|
.word _timer ; $fffa Timer
|
||||||
.word _nmi ; $fffc NMI
|
.word _nmi ; $fffc NMI
|
||||||
.word start ; $fffe reset
|
.word start ; $fffe reset
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
; void gotoxy (unsigned char x, unsigned char y);
|
; void gotoxy (unsigned char x, unsigned char y);
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _gotoxy
|
.export _gotoxy
|
||||||
.import popa, plot
|
.import popa, plot
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
_gotoxy:
|
_gotoxy:
|
||||||
sta CURS_Y ; Set Y
|
sta CURS_Y ; Set Y
|
||||||
jsr popa ; Get X
|
jsr popa ; Get X
|
||||||
sta CURS_X ; Set X
|
sta CURS_X ; Set X
|
||||||
jmp plot ; Set the cursor position
|
jmp plot ; Set the cursor position
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
.include "joy-kernel.inc"
|
.include "joy-kernel.inc"
|
||||||
.include "joy-error.inc"
|
.include "joy-error.inc"
|
||||||
|
.include "pce.inc"
|
||||||
|
|
||||||
.macpack module
|
.macpack module
|
||||||
|
|
||||||
@@ -58,10 +59,10 @@ JOY_COUNT = 4 ; Number of joysticks we support
|
|||||||
;
|
;
|
||||||
|
|
||||||
INSTALL:
|
INSTALL:
|
||||||
lda #<JOY_ERR_OK
|
lda #<JOY_ERR_OK
|
||||||
ldx #>JOY_ERR_OK
|
ldx #>JOY_ERR_OK
|
||||||
|
|
||||||
; rts ; Run into DEINSTALL instead
|
; rts ; Run into UNINSTALL instead
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; DEINSTALL routine. Is called before the driver is removed from memory.
|
; DEINSTALL routine. Is called before the driver is removed from memory.
|
||||||
@@ -69,7 +70,7 @@ INSTALL:
|
|||||||
;
|
;
|
||||||
|
|
||||||
UNINSTALL:
|
UNINSTALL:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
@@ -78,9 +79,9 @@ UNINSTALL:
|
|||||||
;unsigned char __fastcall__ joy_count (void);
|
;unsigned char __fastcall__ joy_count (void);
|
||||||
|
|
||||||
COUNT:
|
COUNT:
|
||||||
lda #<JOY_COUNT
|
lda #<JOY_COUNT
|
||||||
ldx #>JOY_COUNT
|
ldx #>JOY_COUNT
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; READ: Read a particular joystick passed in A.
|
; READ: Read a particular joystick passed in A.
|
||||||
@@ -88,70 +89,71 @@ COUNT:
|
|||||||
;unsigned char __fastcall__ joy_read (unsigned char joystick);
|
;unsigned char __fastcall__ joy_read (unsigned char joystick);
|
||||||
|
|
||||||
READJOY:
|
READJOY:
|
||||||
pha
|
pha
|
||||||
jsr read_joy
|
jsr read_joy
|
||||||
pla
|
pla
|
||||||
tax ; Joystick number into X
|
tax ; Joystick number into X
|
||||||
|
|
||||||
; return value from buffer
|
; return value from buffer
|
||||||
|
|
||||||
joy1:
|
joy1:
|
||||||
lda padbuffer,x
|
lda padbuffer,x
|
||||||
ldx #0
|
ldx #0
|
||||||
rts
|
rts
|
||||||
|
|
||||||
read_joy:
|
read_joy:
|
||||||
; reset multitap counter
|
; reset multitap counter
|
||||||
lda #$01
|
lda #$01
|
||||||
sta $1000
|
sta JOY_CTRL
|
||||||
pha
|
pha
|
||||||
pla
|
pla
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
lda #$03
|
lda #$03
|
||||||
sta $1000
|
sta JOY_CTRL
|
||||||
pha
|
pha
|
||||||
pla
|
pla
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
cly
|
cly
|
||||||
nextpad:
|
nextpad:
|
||||||
lda #$01
|
lda #$01
|
||||||
sta $1000 ; sel = 1
|
sta JOY_CTRL ; sel = 1
|
||||||
pha
|
pha
|
||||||
pla
|
pla
|
||||||
nop
|
nop ; some delay is required
|
||||||
nop
|
nop
|
||||||
|
|
||||||
lda $1000
|
lda JOY_CTRL
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
asl a
|
asl a
|
||||||
sta padbuffer, y ; store new value
|
sta padbuffer, y ; store new value
|
||||||
|
|
||||||
stz $1000
|
stz JOY_CTRL
|
||||||
pha
|
pha
|
||||||
pla
|
pla
|
||||||
nop
|
|
||||||
nop
|
|
||||||
|
|
||||||
lda $1000
|
nop ; some delay is required
|
||||||
and #$0F
|
nop
|
||||||
ora padbuffer, y ; second half of new value
|
|
||||||
|
|
||||||
eor #$FF
|
lda JOY_CTRL
|
||||||
sta padbuffer, y ; store new value
|
and #$0F
|
||||||
|
ora padbuffer, y ; second half of new value
|
||||||
|
|
||||||
iny
|
eor #$FF
|
||||||
cpy #$05
|
sta padbuffer, y ; store new value
|
||||||
bcc nextpad
|
|
||||||
rts
|
iny
|
||||||
|
cpy #$05
|
||||||
|
bcc nextpad
|
||||||
|
rts
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
|
|
||||||
padbuffer:
|
padbuffer:
|
||||||
.res 4
|
.res 4
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
; const void joy_static_stddrv[];
|
; const void joy_static_stddrv[];
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _joy_static_stddrv
|
.export _joy_static_stddrv
|
||||||
.import _pce_stdjoy_joy
|
.import _pce_stdjoy_joy
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
|
|
||||||
_joy_static_stddrv := _pce_stdjoy_joy
|
_joy_static_stddrv := _pce_stdjoy_joy
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
; const char joy_stddrv[];
|
; const char joy_stddrv[];
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _joy_stddrv
|
.export _joy_stddrv
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,36 @@
|
|||||||
|
|
||||||
.export PLOT
|
.export PLOT
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
PLOT:
|
PLOT:
|
||||||
bcs @getpos
|
bcs @getpos
|
||||||
|
|
||||||
tya
|
tya
|
||||||
clc
|
clc
|
||||||
adc _plotlo,x
|
adc _plotlo,x
|
||||||
sta SCREEN_PTR
|
sta SCREEN_PTR
|
||||||
|
|
||||||
lda _plothi,x
|
lda _plothi,x
|
||||||
adc #0
|
adc #0
|
||||||
sta SCREEN_PTR+1
|
sta SCREEN_PTR+1
|
||||||
@getpos:
|
@getpos:
|
||||||
ldx CURS_Y
|
ldx CURS_Y
|
||||||
ldy CURS_X
|
ldy CURS_X
|
||||||
rts
|
rts
|
||||||
|
|
||||||
_plotlo:
|
_plotlo:
|
||||||
.repeat screenrows,line
|
.repeat screenrows,line
|
||||||
.byte <($0000+(line*$80))
|
.byte <($0000+(line*$80))
|
||||||
.endrepeat
|
.endrepeat
|
||||||
|
|
||||||
_plothi:
|
_plothi:
|
||||||
.repeat screenrows,line
|
.repeat screenrows,line
|
||||||
.byte >($0000+(line*$80))
|
.byte >($0000+(line*$80))
|
||||||
.endrepeat
|
.endrepeat
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export psg_init
|
.export psg_init
|
||||||
|
|
||||||
psg_init:
|
psg_init:
|
||||||
clx
|
clx
|
||||||
stx $0800 ; Select channel
|
stx $0800 ; Select channel
|
||||||
psg_clear_loop:
|
psg_clear_loop:
|
||||||
stz $0801 ; Clear global balance
|
stz $0801 ; Clear global balance
|
||||||
stz $0802 ; Clear frequency LSB
|
stz $0802 ; Clear frequency LSB
|
||||||
stz $0803 ; Clear frequency MSB
|
stz $0803 ; Clear frequency MSB
|
||||||
stz $0804 ; Clear volume
|
stz $0804 ; Clear volume
|
||||||
stz $0805 ; Clear balance
|
stz $0805 ; Clear balance
|
||||||
stz $0807 ; Clear noise control
|
stz $0807 ; Clear noise control
|
||||||
stz $0808 ; Clear LFO frequency
|
stz $0808 ; Clear LFO frequency
|
||||||
stz $0809 ; Clear LFO control
|
stz $0809 ; Clear LFO control
|
||||||
|
|
||||||
cly
|
cly
|
||||||
psg_clear_waveform: stz $0806 ; Clear waveform byte
|
psg_clear_waveform:
|
||||||
iny
|
stz $0806 ; Clear waveform byte
|
||||||
cpy #$20
|
iny
|
||||||
bne psg_clear_waveform
|
cpy #$20
|
||||||
|
bne psg_clear_waveform
|
||||||
inx
|
|
||||||
cpx #$06
|
|
||||||
bne psg_clear_loop
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx #$06
|
||||||
|
bne psg_clear_loop
|
||||||
|
rts
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export _revers
|
.export _revers
|
||||||
|
|
||||||
.proc _revers
|
.proc _revers
|
||||||
|
|
||||||
ldx #$00 ; Assume revers off
|
ldx #$00 ; Assume revers off
|
||||||
tay ; Test onoff
|
tay ; Test onoff
|
||||||
beq L1 ; Jump if off
|
beq L1 ; Jump if off
|
||||||
ldx #$80 ; Load on value
|
ldx #$80 ; Load on value
|
||||||
ldy #$00 ; Assume old value is zero
|
ldy #$00 ; Assume old value is zero
|
||||||
L1: lda RVS ; Load old value
|
L1: lda RVS ; Load old value
|
||||||
stx RVS ; Set new value
|
stx RVS ; Set new value
|
||||||
beq L2 ; Jump if old value zero
|
beq L2 ; Jump if old value zero
|
||||||
iny ; Make old value = 1
|
iny ; Make old value = 1
|
||||||
L2: ldx #$00 ; Load high byte of result
|
L2: ldx #$00 ; Load high byte of result
|
||||||
tya ; Load low byte, set CC
|
tya ; Load low byte, set CC
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; force the init constructor to be imported
|
; force the init constructor to be imported
|
||||||
|
|
||||||
.import initconio
|
.import initconio
|
||||||
conio_init = initconio
|
conio_init = initconio
|
||||||
|
|||||||
@@ -1,17 +1,20 @@
|
|||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export vce_init
|
.export vce_init
|
||||||
|
|
||||||
vce_init:
|
vce_init:
|
||||||
stz VCE_ADDR_LO ;
|
; Set CTA to zero
|
||||||
stz VCE_ADDR_HI ; Set CTA to zero
|
stz VCE_ADDR_LO
|
||||||
ldy #$01
|
stz VCE_ADDR_HI
|
||||||
vce_clear_bank: ldx #$00
|
ldy #$01
|
||||||
vce_clear_color: stz VCE_DATA_LO ; Clear color (LSB)
|
vce_clear_bank:
|
||||||
stz VCE_DATA_HI ; Clear color (MSB)
|
ldx #$00
|
||||||
dex
|
vce_clear_color:
|
||||||
bne vce_clear_color
|
stz VCE_DATA_LO ; Clear color (LSB)
|
||||||
dey
|
stz VCE_DATA_HI ; Clear color (MSB)
|
||||||
bne vce_clear_bank
|
dex
|
||||||
rts
|
bne vce_clear_color
|
||||||
|
dey
|
||||||
|
bne vce_clear_bank
|
||||||
|
rts
|
||||||
|
|||||||
@@ -1,40 +1,41 @@
|
|||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
HIRES = 1
|
; FIXME: implement selection of different video modes at runtime
|
||||||
|
HIRES = 1
|
||||||
|
|
||||||
.export vdc_init
|
.export vdc_init
|
||||||
|
|
||||||
vdc_init:
|
vdc_init:
|
||||||
lda a:VDC_CTRL
|
lda a:VDC_CTRL
|
||||||
|
|
||||||
VREG $00, $0000 ; MAWR
|
VREG $00, $0000 ; MAWR
|
||||||
VREG $01, $0000 ; MARR
|
VREG $01, $0000 ; MARR
|
||||||
VREG $05, $0000 ; CR
|
VREG $05, $0000 ; CR
|
||||||
VREG $06, $0000 ; RCR
|
VREG $06, $0000 ; RCR
|
||||||
VREG $07, $0000 ; BXR
|
VREG $07, $0000 ; BXR
|
||||||
VREG $08, $0000 ; BYR
|
VREG $08, $0000 ; BYR
|
||||||
VREG $09, $0070 ; MAWR
|
VREG $09, $0070 ; MAWR
|
||||||
VREG $0C, $1702 ; CRTC - VSR
|
VREG $0C, $1702 ; CRTC - VSR
|
||||||
VREG $0D, $00DF ; CRTC - VDS
|
VREG $0D, $00DF ; CRTC - VDS
|
||||||
VREG $0E, $000C ; CRTC - VDE
|
VREG $0E, $000C ; CRTC - VDE
|
||||||
VREG $0F, $0000 ; DCR
|
VREG $0F, $0000 ; DCR
|
||||||
|
|
||||||
.if HIRES
|
.if HIRES
|
||||||
|
|
||||||
VREG $0A, $0C02 ; CRTC - HSR
|
VREG $0A, $0C02 ; CRTC - HSR
|
||||||
VREG $0B, $043C ; CRTC - HDS
|
VREG $0B, $043C ; CRTC - HDS
|
||||||
lda #$06
|
lda #$06
|
||||||
sta VCE_CTRL
|
sta VCE_CTRL
|
||||||
|
|
||||||
.else
|
.else
|
||||||
|
|
||||||
VREG $0A, $0202 ; CRTC - HSR
|
VREG $0A, $0202 ; CRTC - HSR
|
||||||
VREG $0B, $041F ; CRTC - HDS
|
VREG $0B, $041F ; CRTC - HDS
|
||||||
lda #$04
|
lda #$04
|
||||||
sta VCE_CTRL
|
sta VCE_CTRL
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
lda a:VDC_CTRL
|
lda a:VDC_CTRL
|
||||||
rts
|
rts
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
; VGA charset for the PC-Engine conio implementation
|
; VGA charset for the PC-Engine conio implementation
|
||||||
|
|
||||||
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
;;.byte $7E, $81, $A5, $81, $BD, $99, $81, $7E
|
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
;;.byte $7E, $FF, $DB, $FF, $C3, $E7, $FF, $7E
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $6C, $FE, $FE, $FE, $7C, $38, $10, $00
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $10, $38, $7C, $FE, $7C, $38, $10, $00
|
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $38, $7C, $38, $FE, $FE, $7C, $38, $7C
|
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $10, $10, $38, $7C, $FE, $7C, $38, $7C
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
;;.byte $00, $00, $18, $3C, $3C, $18, $00, $00
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
;;.byte $FF, $FF, $E7, $C3, $C3, $E7, $FF, $FF
|
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $00, $3C, $66, $42, $42, $66, $3C, $00
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
.byte %00000000
|
.byte %00000000
|
||||||
;;.byte $FF, $C3, $99, $BD, $BD, $99, $C3, $FF
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
;;.byte $0F, $07, $0F, $7D, $CC, $CC, $CC, $78
|
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
@@ -101,119 +101,120 @@
|
|||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte %00010000
|
.byte %00010000
|
||||||
.byte $3C, $66, $66, $66, $3C, $18, $7E, $18
|
|
||||||
.byte $3F, $33, $3F, $30, $30, $70, $F0, $E0
|
.byte $3C, $66, $66, $66, $3C, $18, $7E, $18
|
||||||
.byte $7F, $63, $7F, $63, $63, $67, $E6, $C0
|
.byte $3F, $33, $3F, $30, $30, $70, $F0, $E0
|
||||||
.byte $99, $5A, $3C, $E7, $E7, $3C, $5A, $99
|
.byte $7F, $63, $7F, $63, $63, $67, $E6, $C0
|
||||||
.byte $80, $E0, $F8, $FE, $F8, $E0, $80, $00
|
.byte $99, $5A, $3C, $E7, $E7, $3C, $5A, $99
|
||||||
.byte $02, $0E, $3E, $FE, $3E, $0E, $02, $00
|
.byte $80, $E0, $F8, $FE, $F8, $E0, $80, $00
|
||||||
.byte $18, $3C, $7E, $18, $18, $7E, $3C, $18
|
.byte $02, $0E, $3E, $FE, $3E, $0E, $02, $00
|
||||||
.byte $66, $66, $66, $66, $66, $00, $66, $00
|
.byte $18, $3C, $7E, $18, $18, $7E, $3C, $18
|
||||||
.byte $7F, $DB, $DB, $7B, $1B, $1B, $1B, $00
|
.byte $66, $66, $66, $66, $66, $00, $66, $00
|
||||||
.byte $3E, $63, $38, $6C, $6C, $38, $CC, $78
|
.byte $7F, $DB, $DB, $7B, $1B, $1B, $1B, $00
|
||||||
.byte $00, $00, $00, $00, $7E, $7E, $7E, $00
|
.byte $3E, $63, $38, $6C, $6C, $38, $CC, $78
|
||||||
.byte $18, $3C, $7E, $18, $7E, $3C, $18, $FF
|
.byte $00, $00, $00, $00, $7E, $7E, $7E, $00
|
||||||
.byte $18, $3C, $7E, $18, $18, $18, $18, $00
|
.byte $18, $3C, $7E, $18, $7E, $3C, $18, $FF
|
||||||
.byte $18, $18, $18, $18, $7E, $3C, $18, $00
|
.byte $18, $3C, $7E, $18, $18, $18, $18, $00
|
||||||
.byte $00, $18, $0C, $FE, $0C, $18, $00, $00
|
.byte $18, $18, $18, $18, $7E, $3C, $18, $00
|
||||||
.byte $00, $30, $60, $FE, $60, $30, $00, $00
|
.byte $00, $18, $0C, $FE, $0C, $18, $00, $00
|
||||||
.byte $00, $00, $C0, $C0, $C0, $FE, $00, $00
|
.byte $00, $30, $60, $FE, $60, $30, $00, $00
|
||||||
.byte $00, $24, $66, $FF, $66, $24, $00, $00
|
.byte $00, $00, $C0, $C0, $C0, $FE, $00, $00
|
||||||
.byte $00, $18, $3C, $7E, $FF, $FF, $00, $00
|
.byte $00, $24, $66, $FF, $66, $24, $00, $00
|
||||||
.byte $00, $FF, $FF, $7E, $3C, $18, $00, $00
|
.byte $00, $18, $3C, $7E, $FF, $FF, $00, $00
|
||||||
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
.byte $00, $FF, $FF, $7E, $3C, $18, $00, $00
|
||||||
.byte $30, $78, $78, $78, $30, $00, $30, $00
|
.byte $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
.byte $6C, $6C, $6C, $00, $00, $00, $00, $00
|
.byte $30, $78, $78, $78, $30, $00, $30, $00
|
||||||
.byte $6C, $6C, $FE, $6C, $FE, $6C, $6C, $00
|
.byte $6C, $6C, $6C, $00, $00, $00, $00, $00
|
||||||
.byte $30, $7C, $C0, $78, $0C, $F8, $30, $00
|
.byte $6C, $6C, $FE, $6C, $FE, $6C, $6C, $00
|
||||||
.byte $00, $C6, $CC, $18, $30, $66, $C6, $00
|
.byte $30, $7C, $C0, $78, $0C, $F8, $30, $00
|
||||||
.byte $38, $6C, $38, $76, $DC, $CC, $76, $00
|
.byte $00, $C6, $CC, $18, $30, $66, $C6, $00
|
||||||
.byte $60, $60, $C0, $00, $00, $00, $00, $00
|
.byte $38, $6C, $38, $76, $DC, $CC, $76, $00
|
||||||
.byte $18, $30, $60, $60, $60, $30, $18, $00
|
.byte $60, $60, $C0, $00, $00, $00, $00, $00
|
||||||
.byte $60, $30, $18, $18, $18, $30, $60, $00
|
.byte $18, $30, $60, $60, $60, $30, $18, $00
|
||||||
.byte $00, $66, $3C, $FF, $3C, $66, $00, $00
|
.byte $60, $30, $18, $18, $18, $30, $60, $00
|
||||||
.byte $00, $30, $30, $FC, $30, $30, $00, $00
|
.byte $00, $66, $3C, $FF, $3C, $66, $00, $00
|
||||||
.byte $00, $00, $00, $00, $00, $30, $30, $60
|
.byte $00, $30, $30, $FC, $30, $30, $00, $00
|
||||||
.byte $00, $00, $00, $FC, $00, $00, $00, $00
|
.byte $00, $00, $00, $00, $00, $30, $30, $60
|
||||||
.byte $00, $00, $00, $00, $00, $30, $30, $00
|
.byte $00, $00, $00, $FC, $00, $00, $00, $00
|
||||||
.byte $06, $0C, $18, $30, $60, $C0, $80, $00
|
.byte $00, $00, $00, $00, $00, $30, $30, $00
|
||||||
.byte $7C, $C6, $CE, $DE, $F6, $E6, $7C, $00
|
.byte $06, $0C, $18, $30, $60, $C0, $80, $00
|
||||||
.byte $30, $70, $30, $30, $30, $30, $FC, $00
|
.byte $7C, $C6, $CE, $DE, $F6, $E6, $7C, $00
|
||||||
.byte $78, $CC, $0C, $38, $60, $CC, $FC, $00
|
.byte $30, $70, $30, $30, $30, $30, $FC, $00
|
||||||
.byte $78, $CC, $0C, $38, $0C, $CC, $78, $00
|
.byte $78, $CC, $0C, $38, $60, $CC, $FC, $00
|
||||||
.byte $1C, $3C, $6C, $CC, $FE, $0C, $1E, $00
|
.byte $78, $CC, $0C, $38, $0C, $CC, $78, $00
|
||||||
.byte $FC, $C0, $F8, $0C, $0C, $CC, $78, $00
|
.byte $1C, $3C, $6C, $CC, $FE, $0C, $1E, $00
|
||||||
.byte $38, $60, $C0, $F8, $CC, $CC, $78, $00
|
.byte $FC, $C0, $F8, $0C, $0C, $CC, $78, $00
|
||||||
.byte $FC, $CC, $0C, $18, $30, $30, $30, $00
|
.byte $38, $60, $C0, $F8, $CC, $CC, $78, $00
|
||||||
.byte $78, $CC, $CC, $78, $CC, $CC, $78, $00
|
.byte $FC, $CC, $0C, $18, $30, $30, $30, $00
|
||||||
.byte $78, $CC, $CC, $7C, $0C, $18, $70, $00
|
.byte $78, $CC, $CC, $78, $CC, $CC, $78, $00
|
||||||
.byte $00, $30, $30, $00, $00, $30, $30, $00
|
.byte $78, $CC, $CC, $7C, $0C, $18, $70, $00
|
||||||
.byte $00, $30, $30, $00, $00, $30, $30, $60
|
.byte $00, $30, $30, $00, $00, $30, $30, $00
|
||||||
.byte $18, $30, $60, $C0, $60, $30, $18, $00
|
.byte $00, $30, $30, $00, $00, $30, $30, $60
|
||||||
.byte $00, $00, $FC, $00, $00, $FC, $00, $00
|
.byte $18, $30, $60, $C0, $60, $30, $18, $00
|
||||||
.byte $60, $30, $18, $0C, $18, $30, $60, $00
|
.byte $00, $00, $FC, $00, $00, $FC, $00, $00
|
||||||
.byte $78, $CC, $0C, $18, $30, $00, $30, $00
|
.byte $60, $30, $18, $0C, $18, $30, $60, $00
|
||||||
.byte $7C, $C6, $DE, $DE, $DE, $C0, $78, $00
|
.byte $78, $CC, $0C, $18, $30, $00, $30, $00
|
||||||
.byte $30, $78, $CC, $CC, $FC, $CC, $CC, $00
|
.byte $7C, $C6, $DE, $DE, $DE, $C0, $78, $00
|
||||||
.byte $FC, $66, $66, $7C, $66, $66, $FC, $00
|
.byte $30, $78, $CC, $CC, $FC, $CC, $CC, $00
|
||||||
.byte $3C, $66, $C0, $C0, $C0, $66, $3C, $00
|
.byte $FC, $66, $66, $7C, $66, $66, $FC, $00
|
||||||
.byte $F8, $6C, $66, $66, $66, $6C, $F8, $00
|
.byte $3C, $66, $C0, $C0, $C0, $66, $3C, $00
|
||||||
.byte $7E, $60, $60, $78, $60, $60, $7E, $00
|
.byte $F8, $6C, $66, $66, $66, $6C, $F8, $00
|
||||||
.byte $7E, $60, $60, $78, $60, $60, $60, $00
|
.byte $7E, $60, $60, $78, $60, $60, $7E, $00
|
||||||
.byte $3C, $66, $C0, $C0, $CE, $66, $3E, $00
|
.byte $7E, $60, $60, $78, $60, $60, $60, $00
|
||||||
.byte $CC, $CC, $CC, $FC, $CC, $CC, $CC, $00
|
.byte $3C, $66, $C0, $C0, $CE, $66, $3E, $00
|
||||||
.byte $78, $30, $30, $30, $30, $30, $78, $00
|
.byte $CC, $CC, $CC, $FC, $CC, $CC, $CC, $00
|
||||||
.byte $1E, $0C, $0C, $0C, $CC, $CC, $78, $00
|
.byte $78, $30, $30, $30, $30, $30, $78, $00
|
||||||
.byte $E6, $66, $6C, $78, $6C, $66, $E6, $00
|
.byte $1E, $0C, $0C, $0C, $CC, $CC, $78, $00
|
||||||
.byte $60, $60, $60, $60, $60, $60, $7E, $00
|
.byte $E6, $66, $6C, $78, $6C, $66, $E6, $00
|
||||||
.byte $C6, $EE, $FE, $FE, $D6, $C6, $C6, $00
|
.byte $60, $60, $60, $60, $60, $60, $7E, $00
|
||||||
.byte $C6, $E6, $F6, $DE, $CE, $C6, $C6, $00
|
.byte $C6, $EE, $FE, $FE, $D6, $C6, $C6, $00
|
||||||
.byte $38, $6C, $C6, $C6, $C6, $6C, $38, $00
|
.byte $C6, $E6, $F6, $DE, $CE, $C6, $C6, $00
|
||||||
.byte $FC, $66, $66, $7C, $60, $60, $F0, $00
|
.byte $38, $6C, $C6, $C6, $C6, $6C, $38, $00
|
||||||
.byte $78, $CC, $CC, $CC, $DC, $78, $1C, $00
|
.byte $FC, $66, $66, $7C, $60, $60, $F0, $00
|
||||||
.byte $FC, $66, $66, $7C, $6C, $66, $E6, $00
|
.byte $78, $CC, $CC, $CC, $DC, $78, $1C, $00
|
||||||
.byte $78, $CC, $E0, $70, $1C, $CC, $78, $00
|
.byte $FC, $66, $66, $7C, $6C, $66, $E6, $00
|
||||||
.byte $FC, $30, $30, $30, $30, $30, $30, $00
|
.byte $78, $CC, $E0, $70, $1C, $CC, $78, $00
|
||||||
.byte $CC, $CC, $CC, $CC, $CC, $CC, $FC, $00
|
.byte $FC, $30, $30, $30, $30, $30, $30, $00
|
||||||
.byte $CC, $CC, $CC, $CC, $CC, $78, $30, $00
|
.byte $CC, $CC, $CC, $CC, $CC, $CC, $FC, $00
|
||||||
.byte $C6, $C6, $C6, $D6, $FE, $EE, $C6, $00
|
.byte $CC, $CC, $CC, $CC, $CC, $78, $30, $00
|
||||||
.byte $C6, $C6, $6C, $38, $38, $6C, $C6, $00
|
.byte $C6, $C6, $C6, $D6, $FE, $EE, $C6, $00
|
||||||
.byte $CC, $CC, $CC, $78, $30, $30, $78, $00
|
.byte $C6, $C6, $6C, $38, $38, $6C, $C6, $00
|
||||||
.byte $FE, $06, $0C, $18, $30, $60, $FE, $00
|
.byte $CC, $CC, $CC, $78, $30, $30, $78, $00
|
||||||
.byte $78, $60, $60, $60, $60, $60, $78, $00
|
.byte $FE, $06, $0C, $18, $30, $60, $FE, $00
|
||||||
.byte $C0, $60, $30, $18, $0C, $06, $02, $00
|
.byte $78, $60, $60, $60, $60, $60, $78, $00
|
||||||
.byte $78, $18, $18, $18, $18, $18, $78, $00
|
.byte $C0, $60, $30, $18, $0C, $06, $02, $00
|
||||||
.byte $10, $38, $6C, $C6, $00, $00, $00, $00
|
.byte $78, $18, $18, $18, $18, $18, $78, $00
|
||||||
.byte $00, $00, $00, $00, $00, $00, $00, $FF
|
.byte $10, $38, $6C, $C6, $00, $00, $00, $00
|
||||||
.byte $30, $30, $18, $00, $00, $00, $00, $00
|
.byte $00, $00, $00, $00, $00, $00, $00, $FF
|
||||||
.byte $00, $00, $78, $0C, $7C, $CC, $76, $00
|
.byte $30, $30, $18, $00, $00, $00, $00, $00
|
||||||
.byte $E0, $60, $60, $7C, $66, $66, $DC, $00
|
.byte $00, $00, $78, $0C, $7C, $CC, $76, $00
|
||||||
.byte $00, $00, $78, $CC, $C0, $CC, $78, $00
|
.byte $E0, $60, $60, $7C, $66, $66, $DC, $00
|
||||||
.byte $1C, $0C, $0C, $7C, $CC, $CC, $76, $00
|
.byte $00, $00, $78, $CC, $C0, $CC, $78, $00
|
||||||
.byte $00, $00, $78, $CC, $FC, $C0, $78, $00
|
.byte $1C, $0C, $0C, $7C, $CC, $CC, $76, $00
|
||||||
.byte $38, $6C, $60, $F0, $60, $60, $F0, $00
|
.byte $00, $00, $78, $CC, $FC, $C0, $78, $00
|
||||||
.byte $00, $00, $76, $CC, $CC, $7C, $0C, $F8
|
.byte $38, $6C, $60, $F0, $60, $60, $F0, $00
|
||||||
.byte $E0, $60, $6C, $76, $66, $66, $E6, $00
|
.byte $00, $00, $76, $CC, $CC, $7C, $0C, $F8
|
||||||
.byte $30, $00, $70, $30, $30, $30, $78, $00
|
.byte $E0, $60, $6C, $76, $66, $66, $E6, $00
|
||||||
.byte $0C, $00, $0C, $0C, $0C, $CC, $CC, $78
|
.byte $30, $00, $70, $30, $30, $30, $78, $00
|
||||||
.byte $E0, $60, $66, $6C, $78, $6C, $E6, $00
|
.byte $0C, $00, $0C, $0C, $0C, $CC, $CC, $78
|
||||||
.byte $70, $30, $30, $30, $30, $30, $78, $00
|
.byte $E0, $60, $66, $6C, $78, $6C, $E6, $00
|
||||||
.byte $00, $00, $CC, $FE, $FE, $D6, $C6, $00
|
.byte $70, $30, $30, $30, $30, $30, $78, $00
|
||||||
.byte $00, $00, $F8, $CC, $CC, $CC, $CC, $00
|
.byte $00, $00, $CC, $FE, $FE, $D6, $C6, $00
|
||||||
.byte $00, $00, $78, $CC, $CC, $CC, $78, $00
|
.byte $00, $00, $F8, $CC, $CC, $CC, $CC, $00
|
||||||
.byte $00, $00, $DC, $66, $66, $7C, $60, $F0
|
.byte $00, $00, $78, $CC, $CC, $CC, $78, $00
|
||||||
.byte $00, $00, $76, $CC, $CC, $7C, $0C, $1E
|
.byte $00, $00, $DC, $66, $66, $7C, $60, $F0
|
||||||
.byte $00, $00, $DC, $76, $66, $60, $F0, $00
|
.byte $00, $00, $76, $CC, $CC, $7C, $0C, $1E
|
||||||
.byte $00, $00, $7C, $C0, $78, $0C, $F8, $00
|
.byte $00, $00, $DC, $76, $66, $60, $F0, $00
|
||||||
.byte $10, $30, $7C, $30, $30, $34, $18, $00
|
.byte $00, $00, $7C, $C0, $78, $0C, $F8, $00
|
||||||
.byte $00, $00, $CC, $CC, $CC, $CC, $76, $00
|
.byte $10, $30, $7C, $30, $30, $34, $18, $00
|
||||||
.byte $00, $00, $CC, $CC, $CC, $78, $30, $00
|
.byte $00, $00, $CC, $CC, $CC, $CC, $76, $00
|
||||||
.byte $00, $00, $C6, $D6, $FE, $FE, $6C, $00
|
.byte $00, $00, $CC, $CC, $CC, $78, $30, $00
|
||||||
.byte $00, $00, $C6, $6C, $38, $6C, $C6, $00
|
.byte $00, $00, $C6, $D6, $FE, $FE, $6C, $00
|
||||||
.byte $00, $00, $CC, $CC, $CC, $7C, $0C, $F8
|
.byte $00, $00, $C6, $6C, $38, $6C, $C6, $00
|
||||||
.byte $00, $00, $FC, $98, $30, $64, $FC, $00
|
.byte $00, $00, $CC, $CC, $CC, $7C, $0C, $F8
|
||||||
.byte $1C, $30, $30, $E0, $30, $30, $1C, $00
|
.byte $00, $00, $FC, $98, $30, $64, $FC, $00
|
||||||
.byte $18, $18, $18, $00, $18, $18, $18, $00
|
.byte $1C, $30, $30, $E0, $30, $30, $1C, $00
|
||||||
.byte $E0, $30, $30, $1C, $30, $30, $E0, $00
|
.byte $18, $18, $18, $00, $18, $18, $18, $00
|
||||||
.byte $76, $DC, $00, $00, $00, $00, $00, $00
|
.byte $E0, $30, $30, $1C, $30, $30, $E0, $00
|
||||||
.byte $00, $10, $38, $6C, $C6, $C6, $FE, $00
|
.byte $76, $DC, $00, $00, $00, $00, $00, $00
|
||||||
|
.byte $00, $10, $38, $6C, $C6, $C6, $FE, $00
|
||||||
|
|||||||
@@ -2,17 +2,15 @@
|
|||||||
; void waitvblank (void);
|
; void waitvblank (void);
|
||||||
;
|
;
|
||||||
|
|
||||||
.include "pce.inc"
|
.include "pce.inc"
|
||||||
|
|
||||||
.export _waitvblank
|
.export _waitvblank
|
||||||
;; .importzp tickcount
|
|
||||||
|
|
||||||
.proc _waitvblank
|
.proc _waitvblank
|
||||||
|
|
||||||
lda tickcount
|
lda tickcount
|
||||||
@lp: cmp tickcount
|
@lp: cmp tickcount
|
||||||
beq @lp
|
beq @lp
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
|||||||
@@ -9,113 +9,113 @@ static int datavar = 10;
|
|||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
int stackvar = 42;
|
int stackvar = 42;
|
||||||
int i, j;
|
int i, j;
|
||||||
clock_t clk;
|
clock_t clk;
|
||||||
char *p;
|
char* p;
|
||||||
unsigned char xsize, ysize, n;
|
unsigned char xsize, ysize, n;
|
||||||
|
|
||||||
joy_install(&joy_static_stddrv);
|
joy_install(&joy_static_stddrv);
|
||||||
|
|
||||||
clrscr();
|
clrscr();
|
||||||
screensize(&xsize, &ysize);
|
screensize(&xsize, &ysize);
|
||||||
|
|
||||||
cputs("hello world");
|
cputs("hello world");
|
||||||
cputsxy(0, 2, "colors:" );
|
cputsxy(0, 2, "colors:" );
|
||||||
for (i = 0; i < 16; ++i) {
|
for (i = 0; i < 16; ++i) {
|
||||||
textcolor(i);
|
textcolor(i);
|
||||||
cputc('X');
|
cputc('X');
|
||||||
}
|
|
||||||
textcolor(1);
|
|
||||||
|
|
||||||
gotoxy(0,4);
|
|
||||||
cprintf("datavar: %02x\n\r", datavar);
|
|
||||||
cprintf("stackvar: %02x\n\r", stackvar);
|
|
||||||
|
|
||||||
j = joy_count();
|
|
||||||
gotoxy(0,10);
|
|
||||||
cprintf("Found %d Joysticks.", j);
|
|
||||||
|
|
||||||
for (i = 0; i < 4; ++i) {
|
|
||||||
gotoxy(0, 17 + i);
|
|
||||||
p = malloc(16);
|
|
||||||
memcpy(p, "01234567890abcdef", 16);
|
|
||||||
cprintf("alloced at: %04p - %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", p,
|
|
||||||
p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
gotoxy(0,ysize - 1);
|
|
||||||
for (i = 0; i < xsize; ++i) {
|
|
||||||
cputc('0' + i % 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
gotoxy(0,ysize - 2 - ((256 + xsize) / xsize));
|
|
||||||
for (i = 0; i < xsize; ++i) {
|
|
||||||
cputc('0' + i % 10);
|
|
||||||
}
|
|
||||||
for (i = 0; i < (xsize * 5); ++i) {
|
|
||||||
cputc('#');
|
|
||||||
}
|
|
||||||
gotoxy(0,ysize - 1 - ((256 + xsize) / xsize));
|
|
||||||
for (i = 0; i < 256; ++i) {
|
|
||||||
if ((i != '\n') && (i != '\r')) {
|
|
||||||
cputc(i);
|
|
||||||
}
|
}
|
||||||
}
|
textcolor(1);
|
||||||
|
|
||||||
i = get_tv();
|
gotoxy(0,4);
|
||||||
gotoxy(30,0);
|
cprintf("datavar: %02x\n\r", datavar);
|
||||||
cputs("TV Mode: ");
|
cprintf("stackvar: %02x\n\r", stackvar);
|
||||||
switch(i) {
|
|
||||||
case TV_NTSC:
|
|
||||||
cputs("NTSC");
|
|
||||||
break;
|
|
||||||
case TV_PAL:
|
|
||||||
cputs("PAL");
|
|
||||||
break;
|
|
||||||
case TV_OTHER:
|
|
||||||
cputs("OTHER");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
cprintf(" %dx%d", xsize, ysize);
|
|
||||||
|
|
||||||
for(;;) {
|
j = joy_count();
|
||||||
gotoxy(13,4);
|
gotoxy(0,10);
|
||||||
cprintf("%02x", datavar);
|
cprintf("Found %d Joysticks.", j);
|
||||||
gotoxy(13,5);
|
|
||||||
cprintf("%02x", stackvar);
|
|
||||||
++datavar; ++stackvar;
|
|
||||||
|
|
||||||
gotoxy(0,8);
|
for (i = 0; i < 4; ++i) {
|
||||||
clk = clock();
|
gotoxy(0, 17 + i);
|
||||||
cprintf("clock: %08lx", clk);
|
p = malloc(16);
|
||||||
|
memcpy(p, "01234567890abcdef", 16);
|
||||||
for (i = 0; i < 4; ++i)
|
cprintf("alloced at: %04p - %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", p,
|
||||||
{
|
p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7],
|
||||||
gotoxy(0, 12 + i);
|
p[8],p[9],p[10],p[11],p[12],p[13],p[14],p[15]
|
||||||
j = joy_read (i);
|
);
|
||||||
cprintf ("pad %d: %02x %-6s%-6s%-6s%-6s%-6s%-6s%-6s%-6s",
|
|
||||||
i, j,
|
|
||||||
(j & joy_masks[JOY_UP])? " up " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_DOWN])? " down " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_LEFT])? " left " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_RIGHT])? "right " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_FIRE])? " fire " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_FIRE2])? "fire2 " : " ---- ",
|
|
||||||
(j & joy_masks[JOY_SELECT])? "select" : " ---- ",
|
|
||||||
(j & joy_masks[JOY_RUN])? " run " : " ---- ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gotoxy(xsize - 10, 3);
|
gotoxy(0,ysize - 1);
|
||||||
j = (n >> 5) & 1;
|
for (i = 0; i < xsize; ++i) {
|
||||||
revers(j);
|
cputc('0' + i % 10);
|
||||||
cputc(j ? 'R' : ' ');
|
}
|
||||||
cputs(" revers");
|
|
||||||
revers(0);
|
|
||||||
|
|
||||||
waitvblank();
|
gotoxy(0,ysize - 2 - ((256 + xsize) / xsize));
|
||||||
++n;
|
for (i = 0; i < xsize; ++i) {
|
||||||
}
|
cputc('0' + i % 10);
|
||||||
for(;;);
|
}
|
||||||
|
for (i = 0; i < (xsize * 5); ++i) {
|
||||||
|
cputc('#');
|
||||||
|
}
|
||||||
|
gotoxy(0,ysize - 1 - ((256 + xsize) / xsize));
|
||||||
|
for (i = 0; i < 256; ++i) {
|
||||||
|
if ((i != '\n') && (i != '\r')) {
|
||||||
|
cputc(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i = get_tv();
|
||||||
|
gotoxy(30,0);
|
||||||
|
cputs("TV Mode: ");
|
||||||
|
switch(i) {
|
||||||
|
case TV_NTSC:
|
||||||
|
cputs("NTSC");
|
||||||
|
break;
|
||||||
|
case TV_PAL:
|
||||||
|
cputs("PAL");
|
||||||
|
break;
|
||||||
|
case TV_OTHER:
|
||||||
|
cputs("OTHER");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cprintf(" %dx%d", xsize, ysize);
|
||||||
|
|
||||||
|
for(;;) {
|
||||||
|
gotoxy(13,4);
|
||||||
|
cprintf("%02x", datavar);
|
||||||
|
gotoxy(13,5);
|
||||||
|
cprintf("%02x", stackvar);
|
||||||
|
++datavar; ++stackvar;
|
||||||
|
|
||||||
|
gotoxy(0,8);
|
||||||
|
clk = clock();
|
||||||
|
cprintf("clock: %08lx", clk);
|
||||||
|
|
||||||
|
for (i = 0; i < 4; ++i) {
|
||||||
|
gotoxy(0, 12 + i);
|
||||||
|
j = joy_read (i);
|
||||||
|
cprintf ("pad %d: %02x %-6s%-6s%-6s%-6s%-6s%-6s%-6s%-6s",
|
||||||
|
i, j,
|
||||||
|
(j & joy_masks[JOY_UP])? " up " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_DOWN])? " down " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_LEFT])? " left " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_RIGHT])? "right " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_FIRE])? " fire " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_FIRE2])? "fire2 " : " ---- ",
|
||||||
|
(j & joy_masks[JOY_SELECT])? "select" : " ---- ",
|
||||||
|
(j & joy_masks[JOY_RUN])? " run " : " ---- ");
|
||||||
|
}
|
||||||
|
|
||||||
|
gotoxy(xsize - 10, 3);
|
||||||
|
j = (n >> 5) & 1;
|
||||||
|
revers(j);
|
||||||
|
cputc(j ? 'R' : ' ');
|
||||||
|
cputs(" revers");
|
||||||
|
revers(0);
|
||||||
|
|
||||||
|
waitvblank();
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
for(;;);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user