mirror of
https://github.com/aap/pdp6.git
synced 2026-01-11 23:53:31 +00:00
68 lines
957 B
ArmAsm
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
|