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