SYMBOLS {
- __STACKSIZE__: type = weak, value = $0300; # 3 pages stack
+ __STACKSIZE__: type = weak, value = $0300; # 3 pages stack
}
MEMORY {
# Hardware Vectors at End of 2nd 8K ROM
ROMV: start = $fff6, size = $a, file = %O,fill = yes;
- ROM: start = $6000, size = $8000, file = %O, fill = yes,define=yes;
+# ROM: start = $6000, size = $8000, file = %O, fill = yes,define=yes;
# standard 2k SRAM (-zeropage)
STARTUP: load = ROM0, type = ro, define = yes;
INIT: load = ROM0, type = ro, define = yes, optional = yes;
- CODE: load = ROM, type = ro, define = yes;
- RODATA: load = ROM, type = ro, define = yes;
+ CODE: load = ROM0, type = ro, define = yes;
+ RODATA: load = ROM0, type = ro, define = yes;
DATA: load = ROM0, run= RAM, type = rw, define = yes;
# BSS: load = RAM2, type = bss, define = yes;
}
FEATURES {
- CONDES: segment = STARTUP,
- type=constructor,
- label=__CONSTRUCTOR_TABLE__,
- count=__CONSTRUCTOR_COUNT__;
- CONDES: segment = STARTUP,
- type=destructor,
- label=__DESTRUCTOR_TABLE__,
- count=__DESTRUCTOR_COUNT__;
+ CONDES: segment = STARTUP,
+ type=constructor,
+ label=__CONSTRUCTOR_TABLE__,
+ count=__CONSTRUCTOR_COUNT__;
+
+ CONDES: segment = STARTUP,
+ type=destructor,
+ label=__DESTRUCTOR_TABLE__,
+ count=__DESTRUCTOR_COUNT__;
}
; Screen size variables
;
-
-
-.export _screensize
+ .export _screensize
_screensize:
- ldx xsize
- ldy ysize
- rts
+ ldx xsize
+ ldy ysize
+ rts
.rodata
- .export xsize, ysize
+ .export xsize, ysize
-xsize: .byte 64
-ysize: .byte 28
+xsize: .byte 64
+ysize: .byte 28
; setup the CPU and System-IRQ
- ; Initialize CPU
-
- sei
- nop
- csh
- nop
- cld
- nop
-
- ; Setup stack and memory mapping
- ldx #$FF ; Stack top ($21FF)
- txs
- txa
- tam #0 ; 0000-1FFF = Hardware page
-
- lda #$F8
- tam #1 ; 2000-3FFF = Work RAM
-
- lda #$F7
- tam #2 ; 4000-5FFF = Save RAM
-
- lda #1
- tam #3 ; 6000-7FFF Page 2
- lda #2
- tam #4 ; 8000-9FFF Page 3
- lda #3
- tam #5 ; A000-BFFF Page 4
- lda #4
- tam #6 ; C000-DFFF Page 5
-
- ; Initialize hardware
- stz TIMER_COUNT ; Timer off
- lda #$07
- sta IRQ_MASK ; Interrupts off
- stz IRQ_STATUS ; Acknowledge timer
-
- ; Clear work RAM
- stz <$00
- tii $2000, $2001, $1FFF
-
- ;; i dont know why the heck this one doesnt
- ;; work when called from a constructor :/
- .import vdc_init
- jsr vdc_init
+ ; Initialize CPU
+
+ sei
+ nop
+ csh ; set high speed CPU mode
+ nop
+ cld
+ nop
+
+ ; 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 #1 ; 0000-1FFF = Hardware page
+ lda #$F8
+ tam #2 ; 2000-3FFF = Work RAM
+ ;lda #$F7
+ ;tam #2 ; 4000-5FFF = Save RAM
+ ;lda #1
+ ;tam #3 ; 6000-7FFF Page 2
+ ;lda #2
+ ;tam #4 ; 8000-9FFF Page 3
+ ;lda #3
+ ;tam #5 ; A000-BFFF Page 4
+ ;lda #4
+ ;tam #6 ; C000-DFFF Page 5
+ ;lda #0
+ ;tam #7 ; e000-fFFF hucard/syscard bank 0
+
+ ; Clear work RAM (2000-3FFF)
+ stz <$00
+ tii $2000, $2001, $1FFF
+
+ ; Initialize hardware
+ stz TIMER_COUNT ; Timer off
+ lda #$07
+ sta IRQ_MASK ; Interrupts off
+ stz IRQ_STATUS ; Acknowledge timer
+
+ ;; i dont know why the heck this one doesnt
+ ;; work when called from a constructor :/
+ .import vdc_init
+ jsr vdc_init
+
;; jsr joy_init
- ; Turn on background and VD interrupt/IRQ1
- lda #$05
- sta IRQ_MASK ; IRQ1=on
- cli
+ ; Turn on background and VD interrupt/IRQ1
+
+ lda #$05
+ sta IRQ_MASK ; IRQ1=on
+
+ cli
; Clear the BSS data
; Call module constructors
jsr initlib
-; .import initconio
-; jsr initconio
+
+ .import initconio
+ jsr initconio
+
; Pass an empty command line
; ------------------------------------------------------------------------
_irq1:
- pha
- phx
- phy
+ pha
+ phx
+ phy
- inc _tickcount
- bne @s
- inc _tickcount+1
+ inc _tickcount
+ bne @s
+ inc _tickcount+1
@s:
- ; Acknowlege interrupt
- ldaio VDC_CTRL
+ ; Acknowlege interrupt
+ ldaio 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
- .include "pcengine.inc"
- .export vce_init
+ .include "pcengine.inc"
+
+ .export vce_init
vce_init:
stz VCE_ADDR_LO ;
- .include "pcengine.inc"
+ .include "pcengine.inc"
HIRES = 1
- .export vdc_init
+ .export vdc_init
vdc_init:
- ;;lda $0000
- ;;.byte $ad,0,0
-
- ldaio VDC_CTRL
+ ldaio VDC_CTRL
VREG $00, $0000 ; MAWR
VREG $01, $0000 ; MARR
.endif
- ;;lda $0000
- ;;.byte $ad,0,0
-
- ldaio VDC_CTRL
+ ldaio VDC_CTRL
rts
+; 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 $7E, $FF, $DB, $FF, $C3, $E7, $FF, $7E