mirror of
https://github.com/mgcaret/of816.git
synced 2024-12-30 09:29:37 +00:00
Neon816: get some of the hardware support done
This commit is contained in:
parent
daff3166ec
commit
f1d4d8e5ca
@ -16,7 +16,7 @@
|
|||||||
; 88-8F RAM 2
|
; 88-8F RAM 2
|
||||||
; 90-FF Reserved for RAM
|
; 90-FF Reserved for RAM
|
||||||
|
|
||||||
cpu_clk = 14000000
|
cpu_clk = 12000000
|
||||||
|
|
||||||
; *****************
|
; *****************
|
||||||
; Memory regions
|
; Memory regions
|
||||||
|
@ -3,7 +3,7 @@ set -e -x
|
|||||||
ca65 -I ../../inc Neon816.s -l Neon816.lst
|
ca65 -I ../../inc Neon816.s -l Neon816.lst
|
||||||
ca65 -I ../../inc romboot.s -l romboot.lst
|
ca65 -I ../../inc romboot.s -l romboot.lst
|
||||||
../../build.sh Neon816
|
../../build.sh Neon816
|
||||||
ld65 -C Neon816.l -S 0x8000 Neon816.o ../../forth.o ./romboot.o -m forth.map -o of816-neon.bin
|
ld65 -C Neon816.l Neon816.o ../../forth.o ./romboot.o -m forth.map -o of816-neon.bin
|
||||||
ls -l of816-neon.bin
|
ls -l of816-neon.bin
|
||||||
if which -s bin2hex; then
|
if which -s bin2hex; then
|
||||||
hex2bin of816-neon.bin > of816-neon.hex
|
hex2bin of816-neon.bin > of816-neon.hex
|
||||||
|
@ -2,6 +2,142 @@
|
|||||||
;
|
;
|
||||||
.include "./Neon816-hw.inc"
|
.include "./Neon816-hw.inc"
|
||||||
|
|
||||||
|
; Neon816 dictionary, a bit of a different approach than the other ports
|
||||||
|
; This will get set up by the post init function of the system interface
|
||||||
|
; The system interface functions are after this dictionary.
|
||||||
|
|
||||||
|
; Note that most of the words are based on words found in NeonFORTH and
|
||||||
|
; are not subject to the OF816 license terms, but rather any terms that
|
||||||
|
; Lenore Byron places on them.
|
||||||
|
|
||||||
|
dstart "neon816"
|
||||||
|
dchain H_FORTH ; Make branch off the word FORTH
|
||||||
|
|
||||||
|
dword PS2K_STORE,"PS2K!"
|
||||||
|
jsr _popay
|
||||||
|
tya
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
sta f:PS2Kio
|
||||||
|
: lda f:PS2Kstat
|
||||||
|
bit #$08
|
||||||
|
bne :-
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
NEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword PS2K_QUERY,"PS2K?"
|
||||||
|
ldy #$0000
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
lda f:PS2Kstat
|
||||||
|
ror
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
bcc :+
|
||||||
|
dey
|
||||||
|
: tya
|
||||||
|
PUSHNEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword PS2K_FETCH,"PS2K@"
|
||||||
|
lda #$0000
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
: lda f:PS2Kstat
|
||||||
|
ror
|
||||||
|
bcc :-
|
||||||
|
lda f:PS2Kio
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
tay
|
||||||
|
lda #$0000
|
||||||
|
PUSHNEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword PS2M_STORE,"PS2M!"
|
||||||
|
jsr _popay
|
||||||
|
tya
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
sta f:PS2Mio
|
||||||
|
: lda f:PS2Mstat
|
||||||
|
bit #$08
|
||||||
|
bne :-
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
NEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword PS2M_QUERY,"PS2M?"
|
||||||
|
ldy #$0000
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
lda f:PS2Mstat
|
||||||
|
ror
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
bcc :+
|
||||||
|
dey
|
||||||
|
: tya
|
||||||
|
PUSHNEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword PS2M_FETCH,"PS2M@"
|
||||||
|
lda #$0000
|
||||||
|
sep #SHORT_A
|
||||||
|
.a8
|
||||||
|
: lda f:PS2Mstat
|
||||||
|
ror
|
||||||
|
bcc :-
|
||||||
|
lda f:PS2Mio
|
||||||
|
rep #SHORT_A
|
||||||
|
.a16
|
||||||
|
tay
|
||||||
|
lda #$0000
|
||||||
|
PUSHNEXT
|
||||||
|
eword
|
||||||
|
|
||||||
|
; this probably isn't fast enough to reliably set micro and milliseconds
|
||||||
|
dword SETRTC,"SETRTC"
|
||||||
|
ENTER
|
||||||
|
ONLIT RTCus
|
||||||
|
.dword WSTORE
|
||||||
|
ONLIT RTCms
|
||||||
|
.dword WSTORE
|
||||||
|
ONLIT RTCsec
|
||||||
|
.dword CSTORE
|
||||||
|
ONLIT RTCmin
|
||||||
|
.dword CSTORE
|
||||||
|
ONLIT RTChour
|
||||||
|
.dword CSTORE
|
||||||
|
ONLIT RTCday
|
||||||
|
.dword WSTORE
|
||||||
|
EXIT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dword GETRTC,"GETRTC"
|
||||||
|
ENTER
|
||||||
|
ONLIT RTCday
|
||||||
|
.dword WFETCH
|
||||||
|
ONLIT RTChour
|
||||||
|
.dword CFETCH
|
||||||
|
ONLIT RTCmin
|
||||||
|
.dword CFETCH
|
||||||
|
ONLIT RTCsec
|
||||||
|
.dword CFETCH
|
||||||
|
ONLIT RTCms
|
||||||
|
.dword WFETCH
|
||||||
|
ONLIT RTCus
|
||||||
|
.dword WFETCH
|
||||||
|
EXIT
|
||||||
|
eword
|
||||||
|
|
||||||
|
dend
|
||||||
|
|
||||||
|
; and now for the system interface
|
||||||
|
|
||||||
.proc _system_interface
|
.proc _system_interface
|
||||||
;wdm 3
|
;wdm 3
|
||||||
phx
|
phx
|
||||||
@ -53,6 +189,17 @@ table: .addr _sf_pre_init
|
|||||||
|
|
||||||
.proc _sf_post_init
|
.proc _sf_post_init
|
||||||
plx
|
plx
|
||||||
|
; Here we make a vocabulary definition for the neon816 dictionary
|
||||||
|
; that we defined at the beginning of this file.
|
||||||
|
ENTER
|
||||||
|
ONLIT LAST_neon816
|
||||||
|
SLIT "NEON816"
|
||||||
|
.dword dVOCAB
|
||||||
|
.dword LAST ; now set the head of the vocabulary to the
|
||||||
|
.dword drXT ; last word defined in the neon816 dictionary
|
||||||
|
.dword rBODY
|
||||||
|
.dword STORE
|
||||||
|
CODE
|
||||||
jmp _sf_success
|
jmp _sf_success
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
@ -134,3 +281,4 @@ list:
|
|||||||
plx
|
plx
|
||||||
jmp _sf_fail
|
jmp _sf_fail
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user