121 lines
1.8 KiB
Text
121 lines
1.8 KiB
Text
; in simh:
|
|
; simh> set console telnet=3333
|
|
; then invoke telnet to port 3333 on the simh systm
|
|
; simh> load test.bin
|
|
; simh> run
|
|
|
|
.EXTERN ALL
|
|
|
|
; initialize stack pointer
|
|
start: MOV #1000, R6
|
|
JMP go
|
|
|
|
.INCLUDE "tester-psw.mac"
|
|
.INCLUDE "tester-adc-sbc.mac"
|
|
.INCLUDE "tester-addressing.mac"
|
|
.INCLUDE "tester-mov.mac"
|
|
.INCLUDE "tester-tst.mac"
|
|
.INCLUDE "tester-bge.mac"
|
|
|
|
go: MOV #textstart, R0
|
|
CALL print_start
|
|
|
|
CALL psw_store_retrieve
|
|
|
|
CALL psw_flags_trigger
|
|
|
|
CALL test_adc
|
|
|
|
CALL test_sbc
|
|
|
|
CALL test_addr
|
|
|
|
CALL test_mov
|
|
|
|
CALL test_tst
|
|
|
|
CALL test_bge
|
|
|
|
MOV #textfin, R0
|
|
CALL print_start
|
|
TRAP 7
|
|
|
|
; store copy of R0 on the stack
|
|
print_start: MOV R0,-(SP)
|
|
; store PSW (status register) on stack
|
|
MFPS -(SP)
|
|
|
|
; string ends with 0x00
|
|
print: TSTB (R0)
|
|
BEQ pdone
|
|
|
|
; put character in tty buffer
|
|
MOVB (R0), @#TTYTX
|
|
|
|
; wait for it to be transmitted
|
|
waittx: TSTB @#TTYST
|
|
BPL waittx
|
|
|
|
INC R0
|
|
JMP print
|
|
|
|
; retrieve stored r0, r1 and psw from stack
|
|
pdone: MTPS (SP)+
|
|
|
|
MOV (SP)+,R0
|
|
RET
|
|
|
|
print_binary:
|
|
MFPS -(SP)
|
|
MOV R0,-(SP)
|
|
MOV R1,-(SP)
|
|
; 16 bits in a word
|
|
MOV #16.,R1
|
|
|
|
print_bit:
|
|
ASL R0
|
|
BCS print_1
|
|
waittx0:
|
|
TSTB @#TTYST
|
|
BPL waittx0
|
|
MOVB #48., @#TTYTX
|
|
BR print_next_bit
|
|
print_1:
|
|
waittx1:
|
|
TSTB @#TTYST
|
|
BPL waittx1
|
|
MOVB #49., @#TTYTX
|
|
BR print_next_bit
|
|
|
|
print_next_bit:
|
|
; keep track of the number of bits emitted
|
|
DEC R1
|
|
TST R1
|
|
BNE print_bit
|
|
|
|
; emit seperator
|
|
bit_seperator:
|
|
TSTB @#TTYST
|
|
BPL bit_seperator
|
|
MOVB #32., @#TTYTX
|
|
; for some reason the last character is not printed in simh unless repeated
|
|
bit_seperator2:
|
|
TSTB @#TTYST
|
|
BPL bit_seperator2
|
|
MOVB #32., @#TTYTX
|
|
|
|
MOV (SP)+,R1
|
|
MOV (SP)+,R0
|
|
MTPS (SP)+
|
|
RET
|
|
|
|
make_raw
|
|
|
|
textstart: .ASCII "tester running...\r\n\x00"
|
|
textfin: .ASCII "tester finished\r\n\x00"
|
|
.EVEN
|
|
|
|
textbuffer: .BLKB 256.
|
|
|
|
TTYST = 177564
|
|
TTYTX = 177566
|