mirror of
https://github.com/PDP-10/its.git
synced 2026-02-08 09:21:17 +00:00
Reconstruct TAA; UUOS >.
This is based on AI: SYS2; TS XXFILE, which was compiled by TAA on 1979-08-23 from XXFILE MTA220, and on @larsbrinkhoff's reconstruction. After modifying the XXFILE MTA224 source to match (remove the OASC in CTTYB, and the three .CLOSEs in CQUIT), this compiles into an identical binary. The UUO handlers look like they're based on the ones from DIRED, so I've preserved the DIRED comments where possible, but otherwise adjusted to match the style used in XXFILE.
This commit is contained in:
committed by
Adam Sampson
parent
dd476901a5
commit
fbcf82e6dd
273
src/taa/uuos.100
Normal file
273
src/taa/uuos.100
Normal file
@@ -0,0 +1,273 @@
|
||||
; 2018 reconstruction of TAA;UUOS > -*-MIDAS-*-
|
||||
; Reconstructed from
|
||||
; SYS2; TS XXFILE (built 1979-08-23 from DM: SYSENG; XXFILE MTA220)
|
||||
; SYS2; TS MSEND (built 1980-07-28 from DM: SYSENG; MSEND 140)
|
||||
; SYSEN1; XXFILE MTA224 (timestamp 1982-03-08)
|
||||
; SYSEN2; MSEND 140 (timestamp 1979-11-10)
|
||||
; Caller must define DBP, and may define UUOERR if they provide UERROR.
|
||||
|
||||
TITLE UUOS
|
||||
|
||||
; Useful locations relative to P inside UUO handlers
|
||||
UUO40==-14
|
||||
AC0==-10
|
||||
AC1==-7
|
||||
ACN==-6
|
||||
UUOE==-1
|
||||
|
||||
DEFINE FATAL MSG/
|
||||
.VALUE [ASCIZ /: FATAL ERROR -- MSG
|
||||
/]
|
||||
TERMIN
|
||||
|
||||
UUOSCR: BLOCK 2
|
||||
BASE: 10.
|
||||
|
||||
UUOCT==0
|
||||
UUOTAB: JRST ILUUO
|
||||
DEFINE DEFUUO X
|
||||
UUOCT==UUOCT+1
|
||||
X=UUOCT_33
|
||||
JRST U!X
|
||||
TERMIN
|
||||
|
||||
IRPS X,,[ODEC OOCT OBPTR OHPOS OVPOS OCTLP OSIX OASC OASCI OASCR IBLOCK SIXSTR ODECA OOCTA OSIXA OASCA OASCB]
|
||||
DEFUUO X
|
||||
TERMIN
|
||||
IFDEF UUOERR,DEFUUO ERROR
|
||||
|
||||
UUOMAX==.-UUOTAB
|
||||
|
||||
UUOH: 0
|
||||
PUSH P,UUOH
|
||||
PUSH P,40 ; get eff addr. of uuo
|
||||
PUSH P,[0]
|
||||
PUSH P,O
|
||||
PUSH P,A
|
||||
LDB A,[270400,,-3(P)] ; get uuo ac,
|
||||
PUSH P,(A)
|
||||
PUSH P,1(A)
|
||||
PUSH P,A
|
||||
MOVE A,-3(P)
|
||||
PUSH P,B
|
||||
PUSH P,C
|
||||
PUSH P,D
|
||||
PUSH P,E
|
||||
MOVEI O,@-12(P)
|
||||
PUSH P,O
|
||||
PUSH P,@O
|
||||
MOVE E,ACN(P)
|
||||
MOVE B,UUOE(P)
|
||||
LDB C,[330600,,UUO40(P)] ; op code
|
||||
CAIL C,UUOMAX
|
||||
MOVEI C,0 ; grt=>illegal
|
||||
JRST @UUOTAB(C) ; go to proper rout
|
||||
|
||||
UUORET: SUB P,[2,,2]
|
||||
POP P,E
|
||||
POP P,D
|
||||
POP P,C
|
||||
POP P,B
|
||||
POP P,A ; restore ac's
|
||||
POP P,1(A)
|
||||
POP P,(A)
|
||||
UUORT1: POP P,A
|
||||
POP P,O
|
||||
SKIPE (P)
|
||||
XCT (P)
|
||||
SUB P,[2,,2]
|
||||
POPJ P,
|
||||
|
||||
ILUUO: FATAL ILLEGAL UUO
|
||||
|
||||
UOASCA: MOVE B,UUOE(P)
|
||||
HRLI B,440700
|
||||
UOASAL: ILDB D,B
|
||||
JUMPE D,UUORET
|
||||
IDPB D,AC1(P)
|
||||
AOS AC0(P)
|
||||
JRST UOASAL
|
||||
|
||||
UOASCB: IDPB B,AC1(P)
|
||||
AOS AC0(P)
|
||||
JRST UUORET
|
||||
|
||||
UOSIXA: SKIPN C,(P)
|
||||
JRST UUORET
|
||||
MOVE B,AC1(P)
|
||||
PUSHJ P,ISIXST
|
||||
ADDM C,AC0(P)
|
||||
MOVEM D,AC1(P)
|
||||
JRST UUORET
|
||||
|
||||
UODECA: SKIPA A,DECTAB
|
||||
UOOCTA: MOVE A,OCTTAB
|
||||
MOVE C,(P)
|
||||
UONUML: IDIV C,(A)
|
||||
JUMPN C,UONUM1
|
||||
AOBJP A,UONUM1
|
||||
MOVE C,D
|
||||
JRST UONUML
|
||||
UONUM1: ADDI C,"0
|
||||
IDPB C,AC1(P)
|
||||
AOS AC0(P)
|
||||
MOVE C,D
|
||||
AOBJP A,UUORET
|
||||
IDIV C,(A)
|
||||
JRST UONUM1
|
||||
|
||||
DECTAB: -5,,[10000. ? 1000. ? 100. ? 10. ? 1]
|
||||
OCTTAB: -5,,[10000 ? 1000 ? 100 ? 10 ? 1]
|
||||
|
||||
UOBPTR: MOVEI C,0
|
||||
MOVE B,(P)
|
||||
JRST UOASC1
|
||||
UOASCR: SKIPA C,[-1] ; -1 for end of type
|
||||
UOASC: MOVEI C,0 ; no cr
|
||||
HRLI B,440700 ; make ascii pointer
|
||||
UOASC1: MOVEI A,0
|
||||
PUSH P,B
|
||||
UOASCC: ILDB D,B ; get char
|
||||
JUMPE D,UOASCD ; finish?
|
||||
AOJA A,UOASCC
|
||||
UOASCD: POP P,B
|
||||
PUSHJ P,SIOTA
|
||||
JUMPE C,UUORET
|
||||
MOVEI A,2
|
||||
MOVE B,[440700,,[ASCIZ /
|
||||
/]]
|
||||
PUSHJ P,SIOTA
|
||||
JRST UUORET
|
||||
|
||||
UOCTLP: MOVEI A,20
|
||||
PUSHJ P,IOTAD
|
||||
MOVE A,B
|
||||
PUSHJ P,IOTAD
|
||||
JRST UUORET
|
||||
|
||||
UOASCI: MOVE A,B ; prt ascii immediate
|
||||
PUSHJ P,IOTA
|
||||
JRST UUORET
|
||||
|
||||
UOSIX: SKIPN C,(P)
|
||||
JRST UUORET
|
||||
MOVE B,[440700,,UUOSCR]
|
||||
PUSHJ P,ISIXST
|
||||
MOVE A,C
|
||||
PUSHJ P,SIOTA
|
||||
JRST UUORET
|
||||
|
||||
UOVPOS: MOVEI A,20
|
||||
PUSHJ P,IOTAD
|
||||
MOVEI A,"V
|
||||
PUSHJ P,IOTAD
|
||||
MOVEI A,10(B)
|
||||
PUSHJ P,IOTAD
|
||||
JRST UUORET
|
||||
|
||||
UOHPOS: MOVEI A,20
|
||||
PUSHJ P,IOTAD
|
||||
MOVEI A,"H
|
||||
PUSHJ P,IOTAD
|
||||
MOVEI A,10(B)
|
||||
PUSHJ P,IOTAD
|
||||
JRST UUORET
|
||||
|
||||
UODEC: SKIPA C,[10.] ; get base for decimal
|
||||
UOOCT: MOVEI C,8. ; octal base
|
||||
MOVE B,(P) ; get actual word to prt
|
||||
JRST .+3 ; join code
|
||||
UODECI: SKIPA C,[10.] ; decimal
|
||||
UOOCTI: MOVEI C,8.
|
||||
MOVEM C,BASE
|
||||
MOVEI A,0
|
||||
MOVE C,B
|
||||
MOVE B,[010700,,UUOSCR+1]
|
||||
PUSHJ P,UONUM ; print numbr
|
||||
JRST UUORET
|
||||
|
||||
UONUM: IDIV C,BASE
|
||||
ADDI D,"0
|
||||
CAILE D,"9
|
||||
ADDI D,7
|
||||
DPB D,B
|
||||
DBP B
|
||||
ADDI A,1
|
||||
JUMPN C,UONUM
|
||||
PUSHJ P,SIOTA
|
||||
POPJ P,
|
||||
|
||||
IOTA: .CALL [SETZ
|
||||
SIXBIT /IOT/
|
||||
E
|
||||
SETZ A]
|
||||
.LOSE %LSSYS
|
||||
POPJ P,
|
||||
|
||||
IOTAD: .CALL [SETZ
|
||||
SIXBIT /IOT/
|
||||
MOVSI %TJDIS
|
||||
E
|
||||
SETZ A]
|
||||
.LOSE %LSSYS
|
||||
POPJ P,
|
||||
|
||||
SIOTA: .CALL [SETZ
|
||||
SIXBIT /SIOT/
|
||||
E
|
||||
B
|
||||
SETZ A]
|
||||
.LOSE %LSSYS
|
||||
POPJ P,
|
||||
|
||||
UIBLOC: PUSHJ P,IIBLOC
|
||||
HRLI B,201000
|
||||
DPB E,[270400,,B]
|
||||
MOVEM B,<UUO40+1>(P)
|
||||
JRST UUORET
|
||||
|
||||
IIBLOC: ADD B,FREBOT
|
||||
UIBLO1: CAML B,FRETOP
|
||||
JRST MORCOR
|
||||
EXCH B,FREBOT
|
||||
POPJ P,
|
||||
|
||||
MORCOR: MOVE C,FRETOP
|
||||
LSH C,-12
|
||||
.CALL [SETZ
|
||||
SIXBIT /CORBLK/
|
||||
MOVEI %CBNDW+%CBPRV
|
||||
MOVEI %JSELF
|
||||
C
|
||||
SETZI %JSNEW]
|
||||
FATAL NO CORE AVAILABLE TO SATISFY REQUEST
|
||||
MOVEI C,2000
|
||||
ADDM C,FRETOP
|
||||
JRST UIBLO1
|
||||
|
||||
USIXST: MOVEI B,2
|
||||
PUSHJ P,IIBLOC
|
||||
HRLI B,440700
|
||||
SKIPN C,(P)
|
||||
JRST USIXEX
|
||||
PUSHJ P,ISIXST
|
||||
USIXEX: MOVEM B,UUO40(P)
|
||||
MOVE B,[200000,,-1(P)]
|
||||
DPB E,[270400,,B]
|
||||
MOVEM B,<UUO40+1>(P)
|
||||
JRST UUORET
|
||||
|
||||
ISIXST: PUSH P,A
|
||||
PUSH P,B
|
||||
MOVEI A,0
|
||||
ISIXLP: LDB D,[360600,,C]
|
||||
ADDI D,40
|
||||
IDPB D,B
|
||||
ADDI A,1
|
||||
LSH C,6
|
||||
JUMPN C,ISIXLP
|
||||
MOVE C,A
|
||||
MOVE D,B
|
||||
POP P,B
|
||||
POP P,A
|
||||
POPJ P,
|
||||
Reference in New Issue
Block a user