1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-03 02:08:00 +00:00
Files
PDP-10.its/src/nova/ndtest.1
Lars Brinkhoff 44e74a7f2b Nova programs.
NOVCON .008 has an assembler error:
NOROOM+5        17011   0       1       19      TMC     4357

TMC supposedly means Too Many Constants.
2022-04-19 16:51:27 +02:00

546 lines
6.2 KiB
Groff
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE NDTEST
A==1
B==2
C==3
XMT==41
DEFINE NEXT A,B
DSZ NTIMES
JMP .+10
SUBZL 0,0 ;R0 _ 1
STA 0,NTIMES
READS 0,
MOVZL% 0,0(SZR)
JMP B
MOVL% 0,0(SNC)
JMP A
TERMIN
DEFINE PAUSE A
LDA C,A
STA C,PTIMES
LDA B,CADDR
JSR SDLIST
DSZ PTIMES
JMP .-2
TERMIN
LOC 40
SDLIST: STA A,SVA
LDA A,BUSYSW
MOV A,A(SNR)
JMP TDS
SKPBZ XMT
JMP .-1
TDS: LDA A,DELSW
MOV A,A(SNR)
JMP SDL
LDA A,DEL1
STA A,D1
LDA A,DEL2
STA A,D2
DSZ D2
JMP .-1
DSZ D1
JMP .-5
SDL: LDA A,(B)
DOB A,XMT
LDA A,1(B)
NEG A,A
DOCS A,XMT
LDA A,SVA
JMP (C)
SVA: 0
BDL: STA 0,@27 ;BUILD DISPLAY LIST
ISZ @BDLIA ;STORE WORD THEN INC. THE WORD COUNT
JMP (C)
IBDL: LDA A,(B) ;INIT BDL
STA A,27
DSZ 27
STA B,BDLIA
ISZ BDLIA
SUBC A,A
STA A,@BDLIA
JMP (C)
D1: 0
D2: 0
DEL1: 190
LLSP==40_10
DEL2: 1
BUSYSW: 1
DELSW: 0
SWSW: 0
RSP: 40
FFC: 14
LSP: 40_10
CRC: 15
LFC: 12
SPSP: 40_10+40
RQUES: "?_10
NLPS: 10 ;NO. LINES PER SENT.
NCPL: 20 ;NO. CHARS PER LINE
NL: 0
NC: 0
NCHR: 0
RETADD: 0
CADDR: CADD1
BADDR: BADD1
BDLIA: 0 ;BDL INCR ADDR, POINTS TO WORD COUNT
XST: 101000
YST: 121000
ARCNT: 777
HDCNT: 77
FLSTAD: CMALST-1
NSEG: -4
SEGCNT: 1
SVB: 0
REM: 0
CXYB: 142200
CIB: 146000
4INC: 177700
N7: 7
ONES: -1
SV27: 0
NIX: IX
NIY: IY
INCS: 0
RTBOX: 0
RTADGN: 0
M02.15: 037777
M14.15: 3
XLBOX: 0
YLBOX: 0
ADC1: ADC1L-1
ADC2: ADC2L-1
ADC3: ADC3L-1
NTIMES: 0 ;FOR NEXT
PTIMES: 0 ;FOR PAUSE
ISTART: 10000 ;FOR START
ASTART: START
APMTST: PMTST
LOC 400
START: LDA A,ISTART
STA A,NTIMES
START1: LDA A,SWSW
READS 0,
MOV A,A(SZR)
STA 0,DLIST
LDA B,BADDR
JSR SDLIST
MOV A,A(SZR)
JMP START1
NEXT BCDL,START
JMP START1
BADD1: DLIST
13.
CRLF==15_8+12
LFCR=12_8+15
AB="A_8+"B
DLIST: 14_8+14
77_8+77
CRLF
AB
CRLF
AB
LFCR
AB
LFCR
AB
CRLF
AB
CRLF
BCDL: LDA A,NLPS ;BUILD CHAR DISPLAY LIST
STA A,NL
LDA B,CADDR
JSR IBDL
LDA 0,FFC
JSR BDL
LDA A,LSP
STA A,NCHR
BCDL1: LDA A,NCPL
STA A,NC
BCDL2: LDA 0,NCHR
JSR CKCHR
JSR BDL
PAUSE BCDLP
ISZ NCHR
DSZ NC
JMP BCDL2
LDA 0,CRC
JSR BDL
LDA 0,LFC
JSR BDL
JSR BDL
DSZ NL
JMP BCDL1
LDA A,BCDLN
STA A,NTIMES
BCDL3: JSR SDLIST
NEXT @APMTST,BCDL
JMP BCDL3
CKCHR: STA C,RETADD
LDA A,NQC
STA A,NQCC
LDA A,AQCL
STA A,20
CK1: LDA A,@20
SUB% 0,A(SNR)
JMP CKEQ
DSZ NQCC
JMP CK1
JMP @RETADD
CKEQ: LDA C,20
LDA A,RSP
ADD A,C
JMP @(C)
BCDLN: 400
BCDLP: 10 ;FOR PAUSE
NQC: 14.
AQCL: QCL-1
NQCC: 0
QCL: LLSP+1 ;COMPL CHAR SET
LLSP+16
LLSP+17
LLSP+14
LLSP+12
LLSP+15
LLSP+5
LLSP+35
LLSP+36
LLSP+177
LLSP+10
LLSP+34
LLSP+137
LLSP+0 ;NULL
LOC QCL+40
REPEAT 10.,SIN
BOX
BOX
UNLN
NULLC
BLOCK 100
SIN: LDA 0,SPSP
JMP @RETADD
UNLN: JSR BDL
LDA 0,RBKQ
JMP @RETADD
BOX: JSR BDL
LDA 0,RQUES
JMP @RETADD
NULLC: JSR BDL
JMP @RETADD
RBKQ: 10_10+"?
PMTST: LDA A,PMIST
STA A,NTIMES
PMT3: LDA B,CADDR
JSR IBDL
LDA 0,XST
JSR BDL
LDA 0,YST
JSR BDL
LDA 0,ARCNT
STA 0,NL
PMT1: JSR SDLIST
ISZ 2(B)
ISZ 3(B)
DSZ NL
JMP PMT1
LDA 0,2(B)
JSR BDL
LDA 0,3(B)
JSR BDL
LDA 0,HDCNT
STA 0,NL
PMT2: DSZ 3(B)
DSZ 4(B)
JSR SDLIST
DSZ NL
JMP PMT2
NEXT CMAR,PMTST
JMP PMT3
PMIST: 400
CMAR: LDA B,CADDR
JSR IBDL
SUBC 0,0 ;START OFF WITH TWO NULLS
JSR BDL
LDA 0,XST
JSR BDL
LDA 0,YST
JSR BDL
LDA 0,FLSTAD
STA 0,20
SUBZL 0,0
STA 0,SEGCNT
CMAR1: LDA B,M14.15
JSR GNSEG
AND% 0,B(SNR)
JMP CMAR2
LDA A,NSEG
CMAR4: JSR BDL
PAUSE CMARP
INC A,A(SZR)
JMP CMAR4
JMP CMAR1
CMAR2: JSR BDL
PAUSE CMARP
MOV 0,0(SZR)
JMP CMAR1
LDA A,CMAST
STA A,NTIMES
CMAR3: LDA B,CADDR
JSR SDLIST
NEXT CPASA,CMAR
JMP CMAR3
GNSEG: DSZ SEGCNT
JMP (C)
SUBZL 0,0
STA 0,SEGCNT
LDA 0,@20
MOVL% 0,0(SZC)
JMP (C)
STA 0,SEGCNT
LDA 0,@20
JMP (C)
CMARP: 100 ;FOR PAUSE
CMAST: 2000
IX==152525
IY==165252
IB==177777
CX==142000
CY==144000
CI==146000
CXYI==142214
CYI==144300
CMALST: CI
IB
IX
2
IY
2
IX
2
IY
2
IX
CX
IB
2
IX
CY
IB
2
IY
CX
IB
2
IX
CY
IB
4
IY
IX
IB
CX
IX
CXYI
IB
CYI
IY
CI
0
0
CPASA: LDA 0,ADC1
JSR CPAS0
LDA 0,CPAAD
STA 0,NTIMES
CPASA1: JSR SDLIST
NEXT CPASB,CPASA
JMP CPASA1
CPASB: LDA 0,ADC2
JSR CPAS0
LDA 0,CPABD
STA 0,NTIMES
CPASB1: JSR SDLIST
NEXT CPASC,CPASB
JMP CPASB1
CPASC: LDA 0,ADC3
JSR CPAS0
LDA 0,CPACD
STA 0,NTIMES
CPASC1: JSR SDLIST
NEXT @ASTART,CPASC
JMP CPASC1
CPAAD: 10000
CPABD: 100000
CPACD: 10000
CPAS0: STA C,RTCPA
STA 0,25
LDA B,CADDR
JSR IBDL
JMP CPAS3
CPAS1: PAUSE CPAP
CPAS3: SUBZR 1,1
MOVOR 1,1 ;SET TWO HIGH BITS OF R1
LDA 0,@25
MOVL% 0,0(SNC)
JMP CPAS2 ;CHARS
ANDL% 0,1(SNR)
JMP CPAS2 ;;POINT
LDA 1,M02.15
AND 1,0(SNR) ;DONE
JMP @RTCPA ;YES
STA 0,XLBOX
LDA 0,@25
STA 0,YLBOX
JSR RBOX
JMP CPAS1
CPAS2: JSR BDL
JMP CPAS1
CPAP: 400
RTCPA: 0
RBOX: STA C,RTBOX ;GET X LENGTH
LDA A,XLBOX
LDA 0,CXYB ;MOVE SW
JSR BDL
LDA 0,4INC
JSR BDL
LDA 0,CXYB
JSR BDL
LDA CIB
JSR BDL
LDA 0,27
STA 0,SV27
LDA 0,NIX
STA 0,INCS
JSR GENSID
LDA 0,NIY
STA 0,INCS
LDA A,YLBOX
JSR GENSID
BOX2: LDA 0,SV27 ;CODE FOR FIRST TWO SIDES WILL DO FOR
STA 0,26 ;3RD AND 4TH IF X AND Y DIRECTIONS ARE CHANGED
LDA 1,27
SUB 0,1
STA 1,REM
LDA 0,CXYB ;CHANGE A AND Y DIR'S
JSR BDL
LDA 0,@26
JSR BDL
DSZ REM
JMP .-3
LDA 0,CIB
JSR BDL
LDA 0,CXYB
JSR BDL
LDA 0,4INC
JSR BDL
JMP @RTBOX
GENSID: STA C,RTADGN ;R1=LENGTH OF SIDE
SUBO 0,0
STA B,SVB
LDA B,N7
DIV ;R0,,R1/R2 ANSWER IN R1, REMAINDER IN R0
SUB 0,B
MOV 0,0(SNR)
SUB B,B
STA B,REM
LDA B,SVB
LDA 0,INCS
NEGZ A,A(SZC) ;NEGATE ANSWER
JMP GENS1 ;ANS WAS ZERO
JSR BDL
INC A,A(SZR)
JMP .-2
GENS1: LDA A,REM ;GET REMAINDER
MOV A,A(SNR)
JMP @RTADGN ;WAS ZERO
LDA A,ONES ;GENERATE MASK
MOVZL A,A
MOVZL A,A
DSZ REM
JMP .-3
AND A,0
JSR BDL
JMP @RTADGN
XPT==100000
YPT==122000
YPTI==120000
CODEM==140000
BX==CODEM
ADC1L: XPT+776
YPT+1574
BX+13
15
"N
XPT+1423
YPT+1427
BX+22
15
0
"N_10+"E
XPT+1574
YPT+775
BX+13
15
"E
XPT+1423
YPT+346
BX+22
15
0
"S_10+"E
XPT+776
YPT+165
BX+13
15
"S
XPT+335
YPT+346
BX+22
15
0
"S_10+"W
XPT+165
YPT+775
BX+13
15
"W
XPT+335
YPT+1427
BX+22
15
0
"N_10+"W
BX+00
ADC2L: XPT+1000
YPTI+1600
XPT+1417
YPTI+1417
XPT+1600
YPTI+1000
XPT+1417
YPTI+361
XPT+1000
YPTI+200
XPT+361
YPTI+361
XPT+200
YPTI+1000
XPT+361
YPTI+1417
BX+00
ADC3L: XPT+200
YPT+1600
BX+40
20
XPT+1400
YPT+400
ASCII /OVER HERE DUMMY!/
BX+00
CADD1: CDLIST
0
CDLIST: BLOCK 300
END START