1
0
mirror of https://github.com/aap/pdp6.git synced 2026-01-11 23:53:31 +00:00
aap.pdp6/code/tty.s
2018-02-07 01:37:09 +01:00

68 lines
957 B
ArmAsm

TTY=120
AC0==0
AC1==1
AC2==2
PDP==17
INTERNAL PUTC,PUTS
; PRINT CHAR IN AC1 ON TTY
PUTC:
CONSZ TTY,20 ; wait until not busy
JRST .-1
DATAO TTY,AC1 ; transfer character
POPJ PDP,
; CAIE AC1,12 ; return unless LF
; POPJ PDP,
; MOVEI AC1,15 ; put CR and two DEL
; PUSHJ PDP,PUTC
; MOVEI AC1,177
; PUSHJ PDP,PUTC
; PUSHJ PDP,PUTC
; POPJ PDP,
PUTS:
ILDB AC1,AC2
SKIPN AC1
POPJ PDP,
PUSHJ PDP,PUTC
JRST PUTS
INTERNAL GETCH,GETC
; READ CHAR FROM TTY INTO AC1
GETCH:
CONSO TTY,40 ; wait for flag
JRST .-1
DATAI TTY,AC1 ; get character
ANDI AC1,177
POPJ PDP,
GETC:
PUSHJ PDP,GETCH
PUSHJ PDP,PUTC
POPJ PDP,
BASE: 10
DIGITS: EXP "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
; PRINT NUMBER IN AC!
INTERNAL PUTN
PUTN:
JUMPGE AC1,UPUTN
PUSH PDP,AC1
MOVEI AC1, "-"
PUSHJ PDP,PUTC
POP PDP,AC1
MOVM AC1,AC1
UPUTN:
IDIV AC1,BASE
JUMPE AC1,UPR1
PUSH PDP,AC2
PUSHJ PDP,UPUTN
POP PDP,AC2
UPR1:
MOVE AC1,DIGITS(AC2)
JRST PUTC