+++ /dev/null
-( host registers )
-host_ctrl=0x02004000
-host_flags=0x02004001
-host_mbox=0x02004002
-host_swled=0x02004003
-host_sseg0=0x02004004
-host_sseg1=0x02004005
-host_sseg2=0x02004006
-host_sseg3=0x02004007
-
-( ps2 registers )
-ps2_ctrl=0x02004008
-ps2_imask=0x02004009
-ps2_iflag=0x0200400a
-ps2_error=0x0200400b
-ps2_data=0x0200400c
-
-( rs232 registers )
-rs232_ctrl=0x02004010
-rs232_baudl=0x02004011
-rs232_baudh=0x02004012
-rs232_imask=0x02004013
-rs232_iflag=0x02004014
-rs232_data=0x02004015
-
-( ivec -- )
-isr:
- #8 0xa5i8 #32 host_swled !8
-
- #8 0x3ci8 #32 host_sseg0 !8
- #8 0xa5i8 #32 host_sseg1 !8
- #8 0x5ai8 #32 host_sseg2 !8
- #8 0xc3i8 #32 host_sseg3 !8
-
- #8 0x14i8 #32 rs232_baudh !8
- #8 0x58i8 #32 rs232_baudl !8
- #8 0x03i8 #32 rs232_ctrl !8
- #8 0x41i8 #32 rs232_data !8
-
-halt:
- jmp halt
+++ /dev/null
-( host registers )
-host_ctrl=0x02004000
-host_flags=0x02004001
-host_mbox=0x02004002
-host_swled=0x02004003
-host_sseg0=0x02004004
-host_sseg1=0x02004005
-host_sseg2=0x02004006
-host_sseg3=0x02004007
-
-( ps2 registers )
-ps2_ctrl=0x02004008
-ps2_imask=0x02004009
-ps2_iflag=0x0200400a
-ps2_error=0x0200400b
-ps2_data=0x0200400c
-
-( rs232 registers )
-rs232_ctrl=0x02004010
-rs232_baudl=0x02004011
-rs232_baudh=0x02004012
-rs232_imask=0x02004013
-rs232_iflag=0x02004014
-rs232_data=0x02004015
-
-( ivec -- )
-isr:
- dup jz reset
-
- dup + dup + #32 isr_jumptable + @32 >r ;
-
-isr_jumptable:
- reset isr_1 isr_2 isr_3
-
-isr_1:
- #8 0x11i8 #32 host_swled !8 drop
- jmp halt
-
-isr_2:
- #8 0x22i8 #32 host_swled !8 drop
- jmp halt
-
-isr_3:
- #8 0x33i8 #32 host_swled !8 drop
- jmp halt
-
- dup #32 host_swled !8 drop
- #32 rs232_data @8
- #32 rs232_data !8 drop
- ien ;
-
-reset:
- ( Write ISR vec to LEDs )
- #32 host_swled !8
-
- ( 9600 baud, enable Tx/Rx, write "A" )
- #8 0x14i8 #32 rs232_baudh !8 drop
- #8 0x58i8 #32 rs232_baudl !8 drop
- #8 0x01i8 #32 rs232_imask !8 drop
- #8 0x03i8 #32 rs232_ctrl !8 drop
- #8 0x41i8 #32 rs232_data !8 drop
- #8 0x41i8 #32 rs232_data !8 drop
- #8 0x41i8 #32 rs232_data !8 drop
- #8 0x41i8 #32 rs232_data !8 drop
-
- ien
- ( Wait for a flag )
-wait:
- #32 host_flags @8
- jz wait
-
- #32 host_flags @8
- ( #32 host_swled !8 )
- #32 host_flags !8 drop
-
- #8 0x42i8 #32 rs232_data !8 drop
- jmp wait
-
- ( Write a value to ram and read it back )
-
- ( Read value from uart and echo )
- ( #32 rs232_data @8 )
- ( #32 rs232_data !8 drop )
-
- ( Enable uart rx interrupt )
- ( #8 0x01i8 #32 rs232_imask !8 drop )
-
- ( Drop return address, enable interrupts, and halt )
- ( drop ien )
-halt:
- jmp halt
-
+++ /dev/null
-( host registers )
-host_ctrl=0x02004000
-host_flags=0x02004001
-host_mbox=0x02004002
-host_swled=0x02004003
-host_sseg0=0x02004004
-host_sseg1=0x02004005
-host_sseg2=0x02004006
-host_sseg3=0x02004007
-
-( ps2 registers )
-ps2_ctrl=0x02004008
-ps2_imask=0x02004009
-ps2_iflag=0x0200400a
-ps2_error=0x0200400b
-ps2_data=0x0200400c
-
-( rs232 registers )
-rs232_ctrl=0x02004010
-rs232_baudl=0x02004011
-rs232_baudh=0x02004012
-rs232_imask=0x02004013
-rs232_iflag=0x02004014
-rs232_data=0x02004015
-
-( ivec -- )
-isr:
- ( if ivec > 15 goto isr_unknown )
- dup #8 15i8 - jn isr_unknown
-
- ( jmp [isr_jumptable + ivec*4] )
- dup + dup + #32 isr_jmptable + @32 >r ;
-
-isr_jmptable:
- isr_0 isr_1 isr_2 isr_3
- isr_4 isr_5 isr_6 isr_7
- isr_8 isr_9 isr_a isr_b
- isr_c isr_d isr_e isr_f
-
-isr_unknown:
- drop ien ;
-
-( reset )
-isr_0:
- ( write something to seven seg display )
- #8 0x3ci8 #32 host_sseg0 !8 drop
- #8 0xa5i8 #32 host_sseg1 !8 drop
- #8 0x5ai8 #32 host_sseg2 !8 drop
- #8 0xc3i8 #32 host_sseg3 !8 drop
-
- ( write 0x1458 to baud register - 9600 baud )
- #8 0x14i8 #32 rs232_baudh !8 drop
- #8 0x58i8 #32 rs232_baudl !8 drop
-
- ( enable rx ready interrupt )
- #8 0x01i8 #32 rs232_imask !8 drop
-
- ( enable transmitter and receiver )
- #8 0x03i8 #32 rs232_ctrl !8 drop
-
- ( Say hi )
- #8 0x41i8 #32 rs232_data !8 drop
-
- ien jmp halt
-
-( host mailbox flag interrupt )
-isr_1:
- ( Read host flags, write to LEDs, then clear all )
- #32 host_flags @8
- #32 host_swled !8
- #32 host_flags !8 drop
- ien ;
-
-( ps2 interrupt )
-isr_2:
- ien ;
-
-( uart interrupt )
-isr_3:
- ( if [rs232_iflag] & 0x01 == 0x00 then return )
- #32 rs232_iflag @8 #8 0x01i8 & jz _isr_3_ret
-
- ( [rs232_data] = [rs232_data] )
- #32 rs232_data @8
- #32 rs232_data !8 drop
-_isr_3_ret:
- ien ;
-
-isr_4:
- ien ;
-
-isr_5:
- ien ;
-
-isr_6:
- ien ;
-
-isr_7:
- ien ;
-
-isr_8:
- ien ;
-
-isr_9:
- ien ;
-
-isr_a:
- ien ;
-
-isr_b:
- ien ;
-
-isr_c:
- ien ;
-
-isr_d:
- ien ;
-
-isr_e:
- ien ;
-
-isr_f:
- ien ;
-
-halt:
- jmp halt