mirror of
https://github.com/PDP-10/its.git
synced 2026-03-05 19:09:21 +00:00
116 lines
1.7 KiB
Plaintext
Executable File
116 lines
1.7 KiB
Plaintext
Executable File
TITLE LIMERICK PROGRAM
|
||
|
||
VERSIO==.FNAM2
|
||
|
||
|
||
TYOC==2 ; TTY OUTPUT CHANNEL
|
||
|
||
.INSRT SYSENG;$CALL MACRO
|
||
.INSRT EAK;MACROS >
|
||
|
||
|
||
LIMERICK:
|
||
MOVE P,[-LPDL,,PDL-1]
|
||
.OPEN TYOC,[.UAO,,'TTY]
|
||
.LOSE 1000
|
||
.SUSET [.ROPTION,,A] ; CHECK IF THERE IS A COMMAND LINE TO READ
|
||
TLNN A,OPTCMD
|
||
JRST RND
|
||
SETZM CMD ; ZERO THE COMMAND BUFFER
|
||
MOVE A,[CMD,CMD+1]
|
||
BLT A,CMD+LCMD-1
|
||
SETOM CMD+LCMD ; -1 (NONZERO) WILL STOP WRITING INTO BUFFER
|
||
.BREAK 12,[5,,CMD] ; SUPERIOR WILL DEPOSIT INTO BUFFER
|
||
|
||
MOVE D,[440700,,CMD]
|
||
SPACE: ILDB A,D ; IGNORE LEADING SPACES
|
||
CAIN A,40
|
||
JRST SPACE
|
||
CAIN A,"*
|
||
JRST ALL
|
||
|
||
NUMBER: MOVEI B,0
|
||
CAIA
|
||
NUM1: ILDB A,D
|
||
CAIL A,"0
|
||
CAILE A,"9
|
||
JRST NUM2 ; NO. IS TERMINATED BY NON DIGIT
|
||
IMULI B,10.
|
||
ADDI B,-"0(A)
|
||
JRST NUM1
|
||
NUM2: SOUT #TYOC,#%TJDIS,"C"
|
||
MOVE A,B
|
||
SUBI A,1
|
||
PUSHJ P,PRINT
|
||
JRST QUIT
|
||
|
||
RND: SOUT #TYOC,#%TJDIS,"C"
|
||
.RDTIME A,
|
||
PUSHJ P,PRINT
|
||
JRST QUIT
|
||
|
||
ALL: MOVNI B,NLIMS
|
||
AL1: SOUT #TYOC,,"
|
||
"
|
||
MOVEI A,NLIMS(B)
|
||
PUSHJ P,PRINT
|
||
AOJL B,AL1
|
||
JRST QUIT
|
||
|
||
PRINT: PUSH P,B
|
||
PUSH P,C
|
||
MOVM B,A
|
||
IDIVI B,NLIMS ; TAKE NO. MOD THE NO. OF LIMS WE HAVE
|
||
MOVE A,LIMTBL(C)
|
||
HLRZ B,A
|
||
HRLI A,440700
|
||
$CALL SIOT,[#TYOC,A,B]
|
||
.LOSE 1000
|
||
POP P,C
|
||
POP P,B
|
||
POPJ P,
|
||
|
||
QUIT: .SUSET [.RXJNAME,,A]
|
||
CAMN A,[SIXBIT/./]
|
||
JRST DEATH
|
||
$CALL FINISH,#TYOC ; WAIT FOR OUTPUT TO REACH TTY
|
||
.LOSE 1000
|
||
MOVEI B,50.
|
||
CAMN A,[SIXBIT/SOLONG/]
|
||
.SLEEP B,
|
||
DEATH: .CLOSE TYOC,
|
||
.LOGOUT
|
||
.BREAK 16,160000
|
||
.VALUE
|
||
|
||
LCMD==<80./5>+1
|
||
CMD: BLOCK LCMD+1
|
||
|
||
|
||
DEFINE L N,TEXT
|
||
%.TMP1==.
|
||
ASCII TEXT
|
||
%.TMP2==.
|
||
LOC LIMTBL+NLIMS
|
||
REPEAT N,[
|
||
.LENGTH TEXT,,%.TMP1
|
||
]
|
||
LOC %.TMP2
|
||
NLIMS==NLIMS+N
|
||
TERMIN
|
||
|
||
NLIMS==0
|
||
|
||
LPDL==20
|
||
PDL: BLOCK LPDL
|
||
|
||
LITRAL: CONSTANTS
|
||
VARIABLES
|
||
|
||
LIMTBL: BLOCK 1700.
|
||
|
||
.INSRT LIMS >
|
||
|
||
|
||
END LIMERI
|