mirror of
https://github.com/PDP-10/its.git
synced 2026-01-26 04:02:06 +00:00
Add MAGFRM - create tapes for use with MAGDMP.
This commit is contained in:
committed by
Eric Swenson
parent
06c2387bf5
commit
9472b5e82d
@@ -164,6 +164,7 @@ A list of [known ITS machines](doc/machines.md).
|
||||
- LSPEED, set tty line parameters.
|
||||
- LUSER, request help from registered list of logged-in users.
|
||||
- MAGDMP, standalone program loader/dumper for magtape.
|
||||
- MAGFRM, create tapes for use with MAGDMP.
|
||||
- MAIL, Mail sending client.
|
||||
- MAILT, allows editing mail (from :MAIL) in EMACS.
|
||||
- METER, displays system metering information.
|
||||
|
||||
@@ -317,6 +317,10 @@ respond "TM10BP=" "n\r"
|
||||
respond "340P=" "n\r"
|
||||
expect ":KILL"
|
||||
|
||||
# magdmp
|
||||
respond "*" ":midas sys1;ts magfrm_syseng;magfrm\r"
|
||||
expect ":KILL"
|
||||
|
||||
respond "*" ":midas sysbin;_syseng;dump\r"
|
||||
respond "WHICH MACHINE?" "DB\r"
|
||||
expect ":KILL"
|
||||
|
||||
667
src/syseng/magfrm.17
Executable file
667
src/syseng/magfrm.17
Executable file
@@ -0,0 +1,667 @@
|
||||
|
||||
TITLE MAGDMP TAPE CREATOR
|
||||
|
||||
.MLLIT==1
|
||||
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
TT=6
|
||||
;I=7
|
||||
;Q=10
|
||||
MCHN=10 ;MACHINE INDEX
|
||||
J=11
|
||||
R=12
|
||||
W=13
|
||||
H=14
|
||||
P=15
|
||||
T=16
|
||||
U=17
|
||||
|
||||
TYIC==1
|
||||
TYOC==2
|
||||
DKIC==3
|
||||
DKOC==4
|
||||
MTCH==5
|
||||
ERRC==6
|
||||
|
||||
..ERR=001000,,
|
||||
.TYP=002000,,
|
||||
.WERR=003000,,
|
||||
.6TYP=004000,,
|
||||
UUOMAX==4
|
||||
|
||||
DEFINE ERR X
|
||||
..ERR [ASCIZ \X\]TERMIN
|
||||
|
||||
DEFINE TYP X
|
||||
IFSE [X]CRLF,.IOT TYOC,[15]
|
||||
IFSN [X]CRLF,.TYP [ASCIZ \X\]
|
||||
TERMIN
|
||||
|
||||
DEFINE WERR X
|
||||
.WERR [ASCIZ \X\]TERMIN
|
||||
|
||||
%TICLC==10000 ;CONVERT LOWER CASE
|
||||
|
||||
PAT:
|
||||
LOC 41
|
||||
JSR UUOH
|
||||
JSR TSINT
|
||||
LOC PAT
|
||||
PATCH: BLOCK 100
|
||||
|
||||
MCHNTB: OFFSET -.
|
||||
AIMCHN::SIXBIT/AI/
|
||||
MLMCHN::SIXBIT/ML/
|
||||
DMMCHN::SIXBIT/DM/
|
||||
MCMCHN::SIXBIT/MC/
|
||||
LMCHNTB:: OFFSET 0
|
||||
|
||||
GO: MOVE P,[-LPDL-1,,PDL-1]
|
||||
.OPEN TYIC,[%TICLC+.UAI,,'TTY]
|
||||
.VALUE
|
||||
.OPEN TYOC,[.UAO,,'TTY]
|
||||
.VALUE
|
||||
.CALL [ SETZ ;SET UP ^G ^S INTERRUPTS
|
||||
'TTYSET
|
||||
MOVEI TYIC
|
||||
[222622222222]
|
||||
SETZ [232222220222]]
|
||||
.VALUE
|
||||
.6TYP [.FNAM1]
|
||||
TYP .
|
||||
.6TYP [.FNAM2]
|
||||
TYP CRLF
|
||||
WHMCHN: TYP FOR WHICH MACHINE?
|
||||
PUSHJ P,GETSYL
|
||||
JRST BDMCHN
|
||||
JUMPE B,[.CALL [SETZ ;THIS ONE
|
||||
'SSTATU
|
||||
REPEAT 5, MOVEM A
|
||||
SETZM B]
|
||||
.VALUE
|
||||
JRST .+1 ]
|
||||
MOVSI A,-LMCHNTB
|
||||
CAME B,MCHNTB(A)
|
||||
AOBJN A,.-1
|
||||
JUMPL A,WHMCH0
|
||||
BDMCHN: TYP [???
|
||||
]
|
||||
JRST WHMCHN
|
||||
|
||||
WHMCH0: HRRZ MCHN,A
|
||||
PUSHJ P,REW
|
||||
TYP [TAPE REWOUND
|
||||
INITIALIZE]
|
||||
PUSHJ P,Y.OR.N
|
||||
CAIA
|
||||
PUSHJ P,MTINI ;INITIALIZE THE TAPE
|
||||
CAIN MCHN,MCMCHN
|
||||
JRST DIRIN ;MC IS A KL10, WHICH DOESN'T HAVE READIN MODE
|
||||
MOVE A,[-20,,BUF]
|
||||
.IOT MTCH,A ;READ FIRST 20 WORDS
|
||||
JUMPL A,[ERR MAGDMP HRI FILE TOO SHORT,]
|
||||
MOVSI A,-20
|
||||
INICHK: MOVE B,BUF(A)
|
||||
CAMN B,MTHRI(A)
|
||||
AOBJN A,INICHK
|
||||
JUMPL A,[ERR FIRST FILE ON TAPE NOT IN HRI MODE,]
|
||||
DIRIN: MOVEI T,DIR
|
||||
DIRINL: MOVE A,[MTCH,,H]
|
||||
MOVE H,[1,,7]
|
||||
.MTAPE A, ;SPACE TO BEGINNING OF NEXT FILE
|
||||
ERR COULDN'T SPACE TO BEGINNING OF HEADER FILE
|
||||
.OPEN MTCH,[26,,(SIXBIT /MT0/)]
|
||||
ERR OPEN FAILED AT DIRINL?
|
||||
HRLI T,-3
|
||||
.IOT MTCH,T ;GET FIRST 3 WORDS OF HEADER
|
||||
JUMPL T,DIREOF
|
||||
CAIN T,DIRF
|
||||
JRST DIRIN1 ;DIRECTORY NOW FULL
|
||||
MOVE A,[MTCH,,H]
|
||||
MOVE H,[1,,7]
|
||||
.MTAPE A, ;SPACE TO BEGINNING OF NEXT FILE
|
||||
ERR COULDN'T SPACE TO BEGINNING OF ACTUAL FILE
|
||||
JRST DIRINL
|
||||
|
||||
DIREOF: TLNE T,2 ;SKIP IF LH(T) = -3
|
||||
ERR HEADER FILE SHORT
|
||||
DIRIN1: HRRZM T,DIREND
|
||||
UUOERR: MOVE P,[-LPDL-1,,PDL-1]
|
||||
.SUSET [.SMSK2,,[1_TYIC]]
|
||||
PUSHJ P,REW
|
||||
;DROPS THROUGH;DROPS IN
|
||||
INLUP: TYP [
|
||||
_]
|
||||
.IOT TYIC,A
|
||||
CAIN A,"?
|
||||
JRST LISTCM
|
||||
CAIN A,"D
|
||||
JRST DIDE
|
||||
CAIN A,"I
|
||||
JRST INIT
|
||||
CAIN A,"R
|
||||
JRST READ
|
||||
CAIN A,"W
|
||||
JRST WRITE
|
||||
CAIN A,"P
|
||||
JRST POSITN
|
||||
CAIN A,"Q
|
||||
.BREAK 16,040000
|
||||
INLOSE: TYP ?
|
||||
JRST INLUP
|
||||
|
||||
LISTCM: TYP [
|
||||
Directory
|
||||
Initialize
|
||||
Position
|
||||
Read
|
||||
Write
|
||||
Quit
|
||||
]
|
||||
JRST INLUP
|
||||
|
||||
DEL: TYP LETE - not implemented
|
||||
JRST INLOSE
|
||||
|
||||
DIDE:; .IOT TYIC,A
|
||||
; CAIN A,"E
|
||||
; JRST DEL
|
||||
; CAIE A,"I ;DIRECTORY
|
||||
; JRST INLOSE
|
||||
TYP [IRECTORY
|
||||
]
|
||||
MOVEI W,DIR
|
||||
DIRTL: CAMN W,DIREND
|
||||
JRST INLUP
|
||||
.6TYP (W) ;FN1
|
||||
TYP [ ]
|
||||
.6TYP 1(W) ;FN2
|
||||
.6TYP 2(W) ;VERSION #
|
||||
TYP CRLF
|
||||
ADDI W,3
|
||||
JRST DIRTL
|
||||
|
||||
INIT: TYP NITIALIZE
|
||||
PUSHJ P,Y.OR.N
|
||||
JRST INLOSE
|
||||
PUSHJ P,MTINI
|
||||
JRST INLUP
|
||||
|
||||
Y.OR.N: TYP [ (Y or N)? ]
|
||||
.IOT TYIC,A
|
||||
TYP CRLF
|
||||
CAIE A,"Y
|
||||
CAIN A,"y
|
||||
JRST POPJ1
|
||||
CAIE A,"N
|
||||
CAIN A,"n
|
||||
POPJ P,
|
||||
.IOT TYOC,[7]
|
||||
JRST Y.OR.N
|
||||
|
||||
WRITE: TYP [RITE ]
|
||||
SKIPA
|
||||
WRITL1: TYP CRLF
|
||||
TYP FROM
|
||||
PUSHJ P,GETDKF
|
||||
JRST WRITL1
|
||||
HRRZ A,DEV
|
||||
CAIN A,(SIXBIT /MT0/)
|
||||
WERR CAN'T READ FROM MT0
|
||||
MOVEI A,.BII
|
||||
HRLM A,DEV
|
||||
.OPEN DKIC,DEV
|
||||
WERR FILE NOT FOUND
|
||||
SKIPA
|
||||
WRITL2: TYP CRLF
|
||||
TYP ONTO TAPE FILE
|
||||
PUSHJ P,GETMTF
|
||||
JRST WRITL2
|
||||
MOVNI T,1 ;INDICATE WRITING
|
||||
MOVE W,FN1
|
||||
MOVE H,FN2
|
||||
MOVE J,VERNO
|
||||
PUSHJ P,LOOK
|
||||
WERR VERSION ALREADY EXISTS
|
||||
MOVE A,DIREND
|
||||
CAIN A,DIRF
|
||||
WERR DIRECTORY FULL
|
||||
ADDI A,3
|
||||
EXCH A,DIREND
|
||||
MOVEM W,(A)
|
||||
MOVEM H,1(A)
|
||||
HRRZM J,2(A)
|
||||
MOVE H,[1,,10]
|
||||
MOVEM H,TEM
|
||||
MOVE H,[MTCH,,TEM]
|
||||
.MTAPE H, ;SKIP TO LOGICAL END OF TAPE
|
||||
ERR CAN'T SKIP TO END OF TAPE
|
||||
.OPEN MTCH,[.BIO,,(SIXBIT /MT0/)]
|
||||
WERR MAG TAPE LOSING
|
||||
HRLI A,-3
|
||||
.IOT MTCH,A ;WRITE HEADER
|
||||
.OPEN MTCH,[.BIO,,(SIXBIT /MT0/)] ;WRITE EOF
|
||||
ERR COULDN'T WRITE EOF AFTER HEADER
|
||||
PUSHJ P,MTWRT
|
||||
JRST INLUP
|
||||
|
||||
READ: TYP EAD
|
||||
SETZM POSF'
|
||||
READL0: SKIPA
|
||||
READL1: TYP CRLF
|
||||
SKIPN POSF
|
||||
TYP FROM
|
||||
SKIPE POSF
|
||||
TYP TO
|
||||
TYP TAPE FILE
|
||||
PUSHJ P,GETMTF
|
||||
JRST READL1
|
||||
MOVEI T,0 ;INDICATES READING
|
||||
MOVE W,FN1
|
||||
MOVE H,FN2
|
||||
MOVE J,VERNO
|
||||
PUSHJ P,LOOK ;D GETS DIR + INDEX*3
|
||||
WERR FILE NOT FOUND
|
||||
SKIPE POSF
|
||||
JRST READL4
|
||||
PUSH P,D
|
||||
SKIPA
|
||||
READL2: TYP CRLF
|
||||
TYP INTO
|
||||
PUSHJ P,GETDKF
|
||||
JRST READL2
|
||||
HRRZ A,DEV
|
||||
CAIN A,(SIXBIT /MT0/)
|
||||
WERR CAN'T WRITE ONTO MT0
|
||||
MOVEI A,.BIO
|
||||
HRLM A,DEV
|
||||
.OPEN DKOC,DEV
|
||||
WERR OPEN FOR WRITING FAILED
|
||||
POP P,D
|
||||
READL4: SUBI D,DIR
|
||||
IDIVI D,3
|
||||
LSH D,1
|
||||
ADDI D,1 ;# FILES -1 TO SKIP
|
||||
READL3: MOVE A,[1,,7]
|
||||
MOVEM A,TEM
|
||||
MOVE A,[MTCH,,TEM]
|
||||
.MTAPE A, ;SPACE TO BEGINNING OF NEXT FILE
|
||||
ERR CAN'T SPACE TO BEGINNING OF FILE
|
||||
SOJGE D,READL3
|
||||
SKIPE POSF
|
||||
.BREAK 16,040000 ;P COMMAND, LET DDT READ TAPE
|
||||
PUSHJ P,MTRD
|
||||
JRST INLUP
|
||||
|
||||
POSITN: TYP OSITION
|
||||
SETOM POSF'
|
||||
JRST READL0
|
||||
|
||||
GETDKF: MOVSI A,(SIXBIT /@/)
|
||||
MOVEM A,FN1
|
||||
MOVEM A,FN2
|
||||
MOVNI D,2
|
||||
MOVEI A,(SIXBIT /DSK/)
|
||||
HRRM A,DEV
|
||||
.SUSET [.RSNAM,,SNAME]
|
||||
GETDK1: PUSHJ P,GETSYL
|
||||
POPJ P, ;RUBOUT
|
||||
CAIN A,":
|
||||
HLRM B,DEV
|
||||
CAIN A,";
|
||||
MOVEM B,SNAME
|
||||
CAIN A,33
|
||||
JRST GETDK3
|
||||
CAIE A,12
|
||||
CAIN A,15
|
||||
JRST GETDK3
|
||||
CAIE A,40
|
||||
JRST GETDK1 ;MUST HAVE BEEN ; OR :
|
||||
AOJG D,GETDK2
|
||||
MOVEM B,FN1+1(D)
|
||||
JRST GETDK1
|
||||
|
||||
GETDK2: HLRM B,DEV
|
||||
JRST GETDK1
|
||||
|
||||
GETDK3: JUMPE B,GETDK4
|
||||
AOJG D,GETDK5
|
||||
MOVEM B,FN1+1(D)
|
||||
JRST GETDK4
|
||||
|
||||
GETDK5: HLRM B,DEV
|
||||
GETDK4: .SUSET [.SSNAM,,SNAME]
|
||||
POPJ1: AOS (P)
|
||||
CPOPJ: POPJ P,
|
||||
|
||||
GETMTF: MOVSI A,(SIXBIT /@/)
|
||||
MOVEM A,FN1
|
||||
MOVEM A,FN2
|
||||
SETZM VERNO
|
||||
MOVNI D,2
|
||||
GETMT1: PUSHJ P,GETSYL
|
||||
POPJ P, ;RUBOUT
|
||||
CAIN A,33
|
||||
JRST GETMT6
|
||||
CAIE A,12
|
||||
CAIN A,15
|
||||
JRST GETMT6
|
||||
AOJG D,GETMT2
|
||||
MOVEM B,FN1+1(D)
|
||||
JRST GETMT1
|
||||
|
||||
GETMT2: HLRZS B ;VERSION NO
|
||||
JUMPE B,GETMT5
|
||||
MOVE C,[220600,,B]
|
||||
GETMT3: TLNN C,770000
|
||||
JRST GETMT5
|
||||
ILDB A,C
|
||||
JUMPE A,GETMT4
|
||||
CAIL A,'0
|
||||
CAILE A,'9
|
||||
POPJ P, ;BAD VERSION #
|
||||
JRST GETMT3
|
||||
|
||||
GETMT4: LSH B,-6
|
||||
TRNN B,77
|
||||
JRST GETMT4
|
||||
IORI B,202020
|
||||
GETMT5: MOVEM B,VERNO
|
||||
JRST POPJ1
|
||||
|
||||
GETMT6: AOJG D,GETMT2
|
||||
MOVEM B,FN1+1(D)
|
||||
JRST POPJ1
|
||||
|
||||
;SET UP W=FN1, H=FN2, J=VER # OR 0, T < 0 FOR WRITE
|
||||
;DOESN'T SKIP IF TRYING TO READ AND NOT FOUND OR TRYING TO WRITE AND FOUND
|
||||
;RETURNS INDEX IN D FOR READ, VER # IN J FOR WRITE
|
||||
|
||||
LOOK: SETOB B,D ;B = HIGHEST VER # FOUND, D = INDEX
|
||||
MOVEI A,DIR
|
||||
LOOKL: CAMN A,DIREND
|
||||
JRST LOOKE1
|
||||
CAMN W,(A)
|
||||
CAME H,1(A)
|
||||
JRST LOOKE
|
||||
HRRZ C,2(A)
|
||||
JUMPE J,LOOK1
|
||||
CAMN C,J
|
||||
JRST LOOK2
|
||||
LOOKE: ADDI A,3
|
||||
JRST LOOKL
|
||||
|
||||
LOOKE1: JUMPL T,LOOKW ;WRITE
|
||||
JUMPL D,CPOPJ ;NOT FOUND FOR READ
|
||||
LOOK2: JUMPL T,CPOPJ ;WRITING VERNO AND FOUND IT
|
||||
JUMPE J,POPJ1
|
||||
MOVE D,A
|
||||
JRST POPJ1
|
||||
|
||||
LOOK1: CAMG C,B
|
||||
JRST LOOKE
|
||||
MOVE B,C
|
||||
MOVE D,A
|
||||
JRST LOOKE
|
||||
|
||||
LOOKW: JUMPN J,POPJ1 ;VERSION # GIVEN
|
||||
SKIPGE B
|
||||
MOVEI B,202020
|
||||
SUBI B,9_6+9
|
||||
TRNN B,20
|
||||
JRST LOOKW1
|
||||
TRNE B,20_6
|
||||
ADDI B,1_12.-10._6
|
||||
ADDI B,10._6-<9_6+10.>
|
||||
LOOKW1: HRRZI J,<9_6+10.>(B)
|
||||
JRST POPJ1
|
||||
|
||||
GETSYL: MOVEI B,0
|
||||
MOVE C,[440600,,B]
|
||||
GETSY3:.IOT TYIC,A
|
||||
CAIN A,40
|
||||
JRST GETSY3
|
||||
JRST GETSY2
|
||||
|
||||
GETSY1: .IOT TYIC,A
|
||||
GETSY2: CAIN A,^Q
|
||||
JRST GETSYQ
|
||||
CAIE A,";
|
||||
CAIN A,":
|
||||
JRST POPJ1
|
||||
CAIE A,40
|
||||
CAIN A,15
|
||||
JRST POPJ1
|
||||
CAIE A,33
|
||||
CAIN A,12
|
||||
JRST POPJ1
|
||||
CAIN A,177
|
||||
POPJ P,
|
||||
GETSY4: SUBI A,40
|
||||
TLNE C,770000
|
||||
IDPB A,C
|
||||
JRST GETSY1
|
||||
|
||||
GETSYQ: .IOT TYIC,A
|
||||
JRST GETSY4
|
||||
|
||||
MTRD: MOVE A,[-200,,BUF]
|
||||
.IOT MTCH,A
|
||||
HRLOI B,-<BUF+1>(A)
|
||||
EQVI B,BUF
|
||||
.IOT DKOC,B
|
||||
JUMPGE A,MTRD
|
||||
.CLOSE DKOC,
|
||||
JRST REW
|
||||
|
||||
MTWRT: MOVE A,[-200,,BUF]
|
||||
.IOT DKIC,A
|
||||
HRLOI B,-<BUF+1>(A)
|
||||
EQVI B,BUF
|
||||
.IOT MTCH,B
|
||||
JUMPGE A,MTWRT
|
||||
.CLOSE DKIC,
|
||||
REW: .OPEN MTCH,[26,,(SIXBIT /MT0/)]
|
||||
ERR MAG TAPE NOT AVAILABLE
|
||||
MOVE A,[MTCH,,[1]]
|
||||
.MTAPE A, ;REWIND
|
||||
.VALUE
|
||||
POPJ P,
|
||||
|
||||
MTINI: .OPEN MTCH,[7,,(SIXBIT /MT0/)]
|
||||
ERR MAG TAPE NOT AVAILABLE
|
||||
CAIN MCHN,MCMCHN
|
||||
JRST MTINI1
|
||||
MOVE A,[-20,,MTHRI]
|
||||
.IOT MTCH,A ;WRITE HRI LOADER
|
||||
PUSHJ P,MDBOPN
|
||||
MTINIL: HRROI A,B
|
||||
.IOT DKIC,A
|
||||
JUMPL A,[ERR COULDN'T FIND JRST 1 IN . MAGDMP BIN,]
|
||||
CAME B,[JRST 1]
|
||||
JRST MTINIL
|
||||
PUSHJ P,MTWRT
|
||||
MTINI0: TYP [TAPE INITIALIZED
|
||||
]
|
||||
MOVEI T,DIR
|
||||
MOVEM T,DIREND
|
||||
POPJ P,
|
||||
|
||||
MTHRI: -17,,0 ;0 NOTE: TM10B USES I/O BUS IN HRI MODE
|
||||
JFCL ;1
|
||||
HRRI 11,4 ;2
|
||||
CONSO 344,1 ;3
|
||||
JRST 3 ;4
|
||||
ROT -2(11) ;5
|
||||
DATAI 340,@10(11) ;6
|
||||
XCT 10(11) ;7
|
||||
XCT 13(11) ;10
|
||||
SOJA 11,0 ;11
|
||||
CAME 17 ;12
|
||||
ADD (17) ;13
|
||||
SKIPL 17,0 ;14
|
||||
JRST 4,15 ;15
|
||||
AOBJN 17,3 ;16
|
||||
JRST 2 ;17
|
||||
|
||||
MDBOPN: .SUSET [.RSNAM,,SNAME]
|
||||
.SUSET [.SSNAM,,[SIXBIT /./]]
|
||||
MOVE A,MDBFN2(MCHN)
|
||||
MOVEM A,MGDBIN+2
|
||||
.OPEN DKIC,MGDBIN
|
||||
CAIA
|
||||
JRST MDBOP1
|
||||
.6TYP MGDBIN+1
|
||||
TYP [ ]
|
||||
.6TYP MGDBIN+2
|
||||
ERR [ NOT IN . DIRECTORY]
|
||||
|
||||
MDBOP1: .SUSET [.SSNAM,,SNAME]
|
||||
POPJ P,
|
||||
|
||||
MTINI1: PUSHJ P,MDBOPN ;INITIALIZE NON-HARDWARE-READIN TAPE
|
||||
.CALL [SETZ ? SIXBIT/LOAD/ ? MOVEI -1 ? SETZI DKIC] ;LOAD UP MAGDMP
|
||||
ERR CAN'T LOAD UP MAGDMP
|
||||
MOVE A,[-601,,-601] ;DUMP IT OUT OF UPPER CORE WHERE IT LOADED
|
||||
.IOT MTCH,A
|
||||
.CORE <HICORE+1777>/2000 ;AND DELETE THE UPPER CORE
|
||||
JFCL
|
||||
.CLOSE DKIC,
|
||||
PUSHJ P,REW
|
||||
JRST MTINI0
|
||||
|
||||
UUOH: 0
|
||||
MOVEM 17,UUOACS+17
|
||||
MOVEI 17,UUOACS
|
||||
BLT 17,UUOACS+16
|
||||
LDB T,[331100,,40] ;OP CODE
|
||||
JUMPE T,ILUUO
|
||||
CAILE T,UUOMAX
|
||||
JRST ILUUO
|
||||
LDB R,[270400,,40] ;AC FIELD
|
||||
HRRZ A,40 ;EFFECTIVE ADDRESS
|
||||
MOVE P,UUOPDP
|
||||
PUSHJ P,@UUODTB-1(T)
|
||||
JRST .+2
|
||||
AOS UUOH
|
||||
URET: MOVSI 17,UUOACS
|
||||
BLT 17,17
|
||||
JRST 2,@UUOH
|
||||
|
||||
UUODTB: AERR
|
||||
ATYP
|
||||
AWERR
|
||||
A6TYP
|
||||
|
||||
ILUUO: .VALUE [ASCIZ /:ILLEGAL UUO /]
|
||||
|
||||
AERR: PUSHJ P,AXERR
|
||||
.VALUE
|
||||
|
||||
ATYP: HRLI A,440700
|
||||
TYPE: ILDB B,A
|
||||
JUMPE B,CPOPJ
|
||||
.IOT TYOC,B
|
||||
JRST TYPE
|
||||
|
||||
AWERR: PUSHJ P,AXERR
|
||||
MOVEI A,UUOERR
|
||||
MOVEM A,UUOH
|
||||
POPJ P,
|
||||
|
||||
AXERR: .IOT TYOC,[15]
|
||||
PUSHJ P,ATYP
|
||||
.SUSET [.RBCHN,,A]
|
||||
MOVSI A,.RIOS(A)
|
||||
HRRI A,A
|
||||
.SUSET A
|
||||
TLNE A,-1 ;SUPPRESS ISE0
|
||||
.OPEN ERRC,[.UAI,,'ERR ? 1]
|
||||
JRST AXERR2
|
||||
MOVEI A,[ASCIZ/ - /]
|
||||
PUSHJ P,ATYP
|
||||
AXERR1: .IOT ERRC,A
|
||||
CAIGE A,40
|
||||
JRST AXERR2
|
||||
.IOT TYOC,A
|
||||
JRST AXERR1
|
||||
|
||||
AXERR2: .CLOSE ERRC,
|
||||
.SUSET [.SBCHN,,[0]] ;ONCE ONLY
|
||||
.IOT TYOC,[15]
|
||||
POPJ P,
|
||||
|
||||
A6TYP: MOVE A,@40
|
||||
LSHC A,-36.
|
||||
A6TYPL: LSHC A,6
|
||||
ADDI A,40
|
||||
.IOT TYOC,A
|
||||
MOVEI A,0
|
||||
JUMPN B,A6TYPL
|
||||
POPJ P,
|
||||
|
||||
TSINT: 0 ;ONLY TYI INTERRUPTS CAN COME HERE
|
||||
0
|
||||
MOVEM A,TSINTA
|
||||
MOVEI A,TYIC
|
||||
.ITYIC A,
|
||||
JRST TSINTX
|
||||
CAIE A,^G
|
||||
JRST TSINTX
|
||||
.RESET TYIC,
|
||||
.RESET TYOC,
|
||||
.DISMISS [.+1]
|
||||
WERR ?QUIT?
|
||||
|
||||
TSINTX: MOVE A,TSINTA
|
||||
.DISMISS TSINT+1
|
||||
|
||||
;MTAPE1: SETZ
|
||||
; SIXBIT /MTAPE/
|
||||
; 1000,,MTCH
|
||||
; 1000,,0
|
||||
; 401000,,6
|
||||
;
|
||||
;MTAPE2: SETZ
|
||||
; SIXBIT /MTAPE/
|
||||
; 1000,,MTCH
|
||||
; 1000,,0
|
||||
; 401000,,1
|
||||
|
||||
TEM: 0
|
||||
|
||||
MGDBIN: 6,,(SIXBIT /DSK/)
|
||||
SIXBIT /MAGDMP/
|
||||
SIXBIT /BIN/
|
||||
|
||||
MDBFN2: IRPS X,,[AI ML DM MC]
|
||||
SIXBIT/BIN.!X/
|
||||
TERMIN
|
||||
|
||||
LPDL==20
|
||||
PDL: BLOCK LPDL
|
||||
LUUPDL==10
|
||||
UUOPDP: -LUUPDL-1,,UUOPDL-1
|
||||
UUOPDL: BLOCK LUUPDL
|
||||
UUOACS: BLOCK 20
|
||||
TSINTA: 0
|
||||
BUF: BLOCK 200
|
||||
DIR: BLOCK 20.*3
|
||||
DIRF:
|
||||
DIREND: 0
|
||||
|
||||
DEV: 0
|
||||
FN1: 0
|
||||
FN2: 0
|
||||
SNAME: 0
|
||||
VERNO: 0
|
||||
|
||||
CONSTANTS
|
||||
VARIABLES
|
||||
HICORE:
|
||||
END GO
|
||||
|
||||
Reference in New Issue
Block a user