1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-28 12:59:20 +00:00

Added channa and dragon directories, and added sources for netime,

dmpcpy, fsdefs, modems, netwrk, and pft.
This commit is contained in:
Eric Swenson
2016-11-18 08:14:56 -08:00
committed by Lars Brinkhoff
parent 62551208c4
commit 336bbaa979
10 changed files with 7676 additions and 0 deletions

153
src/syseng/dmpcpy.11 Executable file
View File

@@ -0,0 +1,153 @@
; -*- MIDAS -*-
TITLE DMPCPY - COPY DUMPS FROM SWAP AREA TO FILE AREA
A=1
B=2
C=3
D=4
E=5
T=6
TT=7
P=17
CHDIRI=10
CHDSKI=11
CHDSKO=12
.INSRT SYSENG;FSDEFS >
PDL: -20,,.
BLOCK 20
;DIRECTORIES WHERE STUFF MIGHT GET DUMPED OUT OF TIMESHARING
DIRLST: SIXBIT/./
SIXBIT/CRASH/
SIXBIT/CRASH2/
NDIRS==.-DIRLST
DIR: BLOCK 2000
BUF: BLOCK 2000
USRVAR: SIXBIT /OPTION/ ? TLO %OPINT\%OPOPC
SIXBIT /MASK/ ? MOVE [%PIIOC\%PIPDL]
LUSRVAR==:.-USRVAR
GO: .CLOSE 1, ;RUNS AS DAEMON
MOVE P,PDL
MOVE TT,[-LUSRVAR,,USRVAR]
.CALL [ SETZ ? SIXBIT /USRVAR/
MOVEI %JSELF
SETZ TT ]
.LOSE %LSSYS
CHKTIM: .CALL [ SETZ ? SIXBIT /RQDATE/ ; don't frob with files
SETZM A ] ; if system doesn't know the time
.LOSE %LSSYS
AOJN A,KNOTIM
MOVEI A,30.*15. ; 15 seconds
.SLEEP A,
JRST CHKTIM
KNOTIM: MOVSI E,-NDIRS
CHKDIR: .CALL [ SETZ ? SIXBIT/OPEN/
[.BII,,CHDIRI]
[SIXBIT/DSK/]
[SIXBIT/.FILE./]
[SIXBIT/(DIR)/]
SETZ DIRLST(E)]
JRST NXTDIR ; Hey, there might not -be- such a directory!
MOVE TT,[-2000,,DIR]
.IOT CHDIRI,TT
.CLOSE CHDIRI,
MOVE D,UDNAMP+DIR
CHKFIL: CAIL D,2000
JRST NXTDIR
MOVE TT,UNRNDM+DIR(D)
SKIPGE UNDATE+DIR(D)
TLNE TT,UNDUMP\UNIGFL\UNREAP\UNLINK ; Don't screw with files
JRST NXTFIL ; you don't understand.
;HERE WE HAVE FOUND A FILE WRITTEN OUT OF TIMESHARING
;COPY IT SO AS TO (1) SET THE FILE DATE AND (2) GET IT OUT
; OF THE SWAPPING AREA. NTS FILES ARE WRITTEN IN THE SWAPPING
; AREA TO DECREASE THE PROBABILITY OF CLOBBERING SOME OTHER FILE.
.CALL [ SETZ ? SIXBIT/OPEN/
MOVES TT
[.BII,,CHDSKI]
[SIXBIT/DSK/]
UNFN1+DIR(D)
UNFN2+DIR(D)
SETZ DIRLST(E) ]
JSP T,[ CAIE TT,%ENSFL ; perhaps a hacker deleted it
CAIN TT,%ENAPK ; perhaps that pack had to go offline
JRST NXTFIL
JRST LOSE ]
.CALL [ SETZ ? SIXBIT/OPEN/
MOVES TT
[.BIO,,CHDSKO]
[SIXBIT/DSK/]
[SIXBIT/_DMPCP/]
[SIXBIT/OUTPUT/]
SETZ DIRLST(E) ]
JSP T,[ CAIE TT,%EFLDR
JRST LOSE
MOVEI TT,30.*60.*5 ; 5 minutes
.SLEEP TT,
JRST .-1 ]
CPYFIL: MOVE TT,[-2000,,BUF]
.IOT CHDSKI,TT
MOVEI T,-BUF(TT)
JUMPE T,ENDFIL
MOVNS T
MOVSS T
HRRI T,BUF
.IOT CHDSKO,T
JRST CPYFIL
ENDFIL: .CLOSE CHDSKI,
.CALL [ SETZ ? 'RENMWO
MOVEI CHDSKO
UNFN1+DIR(D)
SETZ UNFN2+DIR(D) ]
.LOSE %LSSYS
.CLOSE CHDSKO,
NXTFIL: ADDI D,LUNBLK
JRST CHKFIL
NXTDIR: AOBJN E,CHKDIR
.LOGOUT 1,
.VALUE
; JSP T,LOSE is like .LOSE %LSFIL(TT)
LOSE: .CALL [ SETZ ? SIXBIT /LOSE/
MOVEI %LSFIL(TT)
SETZI -2(T) ]
.LOSE %LSSYS
TSINT:
LOC 42
-LTSINT,,TSINT
LOC TSINT
P
%PIIOC ? 0 ? %PIIOC ? 0 ? IOCINT
LTSINT==:.-TSINT
; If there is a disk or directory full problem, wait for someone to notice.
IOCINT: PUSH P,T
.SUSET [.RBCHN,,T]
CAIE T,CHDSKO
.LOSE
.STATUS CHDSKO,T
LDB T,[330500,,T]
CAIE T,11 ; DEVICE FULL
CAIN T,14 ; DIRECTORY FULL
JRST WAIT
.VALUE
WAIT: MOVEI T,30.*60.*5 ; 5 minutes
.SLEEP T,
POP P,T
.CALL [ SETZ ? SIXBIT /DISMIS/
SETZ P ]
.LOSE %LSSYS
END GO

154
src/syseng/fsdefs.40 Executable file
View File

@@ -0,0 +1,154 @@
.AUXIL
IFNDEF DEFSYM,[ ;ALLOW USER TO USE SYMBOLS IN OTHER WAYS IF HE WISHES.
;BUT NORMALLY, DEFSYM FOO==BAR DOES FOO==BAR WITH ERROR CHECK.
DEFINE DEFSYM X/
IRPS Z,,[X]
IFNDEF Z,X
.ELSE [
$$TEM1==Z
X
IFN Z-$$TEM1,.ERR Z MULTIPLY .QUOTE`.QUOTE/DEFINED/`
]
.ISTOP
TERMIN TERMIN
IFLE .MLLIT,.ERR .MLLIT MUST BE 1; SETTING IT TO 1.
.MLLIT==1
$$TEMP==1
]
.ELSE $$TEMP==0
;FILE SYSTEM PARAMETERS - APPLIES TO ALL ITS MACHINES
;9/5/79 - tut format changed!
;MFD INFO
IFDEF NBLKS,[ ;MFDBLK KNOWN ONLY IF .INSRT APPROPRIATE PHYSICAL PARAMS FILE
DEFSYM MFDBLK==NBLKS/2-1 ;LOC ON DISK
DEFSYM MFDCYL==MFDBLK/NBLKSC
DEFSYM MFDSRF==<MFDBLK-MFDCYL*NBLKSC>*SECBLK/NSECS
DEFSYM MFDSEC==<MFDBLK-MFDCYL*NBLKSC>*SECBLK-MFDSRF*NSECS
]
;RANDOM INFO IN MFD
DEFSYM MDNUM==0 ;ASCENDING DIR NUM
DEFSYM MDNAMP==1 ;PNTR TO ORG OF USER NAME BLOCK AREA
DEFSYM MDYEAR==2 ;CURRENT YEAR
DEFSYM MPDOFF==3 ;DE-CORIOLIS CLOCK OFFSET
DEFSYM MPDWDK==4 ;PREFERRED WRITING DISK (PHYSICAL DRIVE #)
DEFSYM MDCHK==5 ;THIS WORD MUST BE M.F.D. (FOR CHECKING)
DEFSYM MDNUDS==6 ;NUMBER USER DIRECTORIES (FOR CHECKING ONLY)
DEFSYM LMIBLK==7 ;TOTAL STG USED BY HACKS LIKE THIS
;USER NAME BLKS FROM C(MDNAMP) TO END
DEFSYM LMNBLK==2 ;# WDS/BLK
DEFSYM MNUNAM==0 ;6BIT USER NAME
;SECOND WORD OF A USER-NAME BLOCK IS ZERO.
;DECUUO CONTAINS A KLUDGE WHICH DEPENDS ON THIS,
;PLEASE NOTIFY BUG-DECUUO BEFORE CHANGING IT.
;TUT INFO
IFDEF NBLKS,[
DEFSYM TUTBLK==MFDBLK-NTUTBL ;LOC ON DISK
DEFSYM TUTCYL==TUTBLK/NBLKSC
DEFSYM TUTSRF==<TUTBLK-TUTCYL*NBLKSC>*SECBLK/NSECS
DEFSYM TUTSEC==<TUTBLK-TUTCYL*NBLKSC>*SECBLK-TUTSRF*NSECS
]
DEFSYM TUTBYT==3 ;SIZE OF BYTES (USED TO BE 4)
DEFSYM TUTBP==<440000+TUTBYT_6>,,
DEFSYM TUTEPW==36./TUTBYT ;NUMBER OF ENTRIES PER WORD
DEFSYM TUTMAX==1_TUTBYT
DEFSYM TUTLK==TUTMAX-1 ;HIGHEST CODE MEANS LOCKED OUT
DEFSYM TUTMNY==TUTLK-1 ;TUT MANY OR MORE REFS
;RANDOM INFO IN TUT (AT THE FRONT)
DEFSYM QPKNUM==0 ;PACK #
DEFSYM QPAKID==1 ;PACK ID
DEFSYM QTUTP==2 ;FREE SPACE POINTER TO TRACK AREA. ADVANCE BY CYLINDERS
DEFSYM QSWAPA==3 ;SWAPPING AREA. FIRST TRACK OF NON-SWAPPING AREA
;NEW FILES WILL NOT BE WRITTEN LOWER THAN THIS.
DEFSYM QFRSTB==4 ;FIRST BLOCK TUT'ED
DEFSYM QLASTB==5 ;LAST BLOCK TUT'ED
DEFSYM QTRSRV==6 ;-1 IF ONLY ALLOCATED DIRS CAN HAVE FILES ON THIS PACK
;IF NOT 0 AND NOT -1, SIXBIT NAME OF "SECONDARY" PACK
;STG FOR RANDOM INFO ^
DEFSYM LTIBLK==20 ;BYTES MAPPING THE DISK START HERE
;UFD INFO
;IF A IS RELATIVE LOCATION OF MFD ENTRY, USER DIR IS LOCATED IN
;TRACK NUMBERED <A-2000+2*MDNUDS>/2 (SEE QFL2)
DEFSYM UFDBYT==6 ;SIZE OF BYTES (Do not change!)
DEFSYM UFDBPW==36./UFDBYT ;NUMBER OF BYTES PER WORD
;RANDOM INFO IN UFD
DEFSYM UDESCP==0 ;FS PNTR TO DESC AREA
DEFSYM UDNAMP==1 ;PNTR TO ORG OF NAME AREA
DEFSYM UDNAME==2 ;USER NAME (FOR CHECKING)
DEFSYM UDBLKS==3 ;LEFT HALF HAS AMOUNT OF SPACE ALLOCATED (NOT USED
; CURRENTLY BY SYSTEM), RIGHT HALF HAS NUMBER OF BLOCKS USED.
DEFSYM UDALLO==4 ;IF NONZERO, LEFT HALF HAS DISK NUMBER, RIGHT
; HALF HAS AMOUNT OF SPACE ALLOCATED
DEFSYM UDDESC==11. ;FIRST LOC AVAIL FOR DESC
;UFD DESCRIPTORS
;0 => FREE 1-UDTKMX => TAKE NEXT N
;UDTKMX+1 THRU UDWPH-1 => SKIP N-UDTKMX AND TAKE ONE
;UDWPH => WRITE-PLACE-HOLDER
;40 BIT SET => LOAD ADDRESS. LOWER 5 BITS PLUS NEXT NXLBYT (2)
; CHARS (17 BITS IN ALL)
;40 BIT & 20 BIT => "FUNNY" BLOCK IF DMDSK. WHAT IS THIS, ANYWAY?
;END BY 0
;IF LINK DESCR
;6 CHAR OR UNTIL ; = SYS NAME. MUST HAVE NO CHAR = 0 IN THIS OR NEXT 2 NAMES
;NEXT CHAR QUOTED BY : (FOR NAMES WITH : OR ;)
;NEXT CHAR N1
;NEXT CHAR N2
;END BY 0
DEFSYM UDTKMX==12. ;HIGHEST "TAKE N" CODE
DEFSYM UDWPH==31. ;PLACE HOLDER ON WRITE (OR NULL FILE)
DEFSYM UDSKMX==UDWPH-UDTKMX-1 ;# BLOCKS THAT CAN BE SKIPPED
DEFSYM NXLBYT==2 ;# ADDITIONAL BYTES FOR LOAD ADDR
;IN SYSTEM THIS IS DEFINED AT FRONT OF FILE
;NAME AREA DATA
DEFSYM LUNBLK==5 ;WDS/NAME BLK
DEFSYM UNFN1==0 ;FIRST FN
DEFSYM UNFN2==1 ;SECOND FN
DEFSYM UNRNDM==2 ;ALL KINDS OF RANDOM INFO
DEFSYM UNDSCP==1500,, ;PNTR TO DESC
DEFSYM UNPKN==150500,, ;PACK #
DEFSYM UNLINK==1 ;LINK BIT
DEFSYM UNLNKB==220100,,
DEFSYM UNREAP==2 ;IF 1, DONT REAP FILE
DEFSYM UNWRIT==4 ;OPEN FOR WRITING
DEFSYM UNMARK==10 ;GC MARK BIT
DEFSYM UNCDEL==20 ;DEL WHEN CLOSED
DEFSYM DELBTS==20 ;DELETED -- IGNORE
DEFSYM UNIGFL==24 ;BITS TO IGNORE FILE
DEFSYM UNWRDC==301200,, ;WORD COUNT OF LAST BLOCK MOD 2000
DEFSYM UNDUMP==400000 ;HAS BEEN DUMPED
DEFSYM UNDATE==3 ;DATE ETC.
DEFSYM UNTIM==2200,, ;COMPACTED TIME OF CREATION
DEFSYM UNYMD==222000,, ;Y,M,D OF CREATION
DEFSYM UNMON==270400,, ;MONTH
DEFSYM UNDAY==220500,, ;DAY
DEFSYM UNYRB==330700,, ;YEAR
DEFSYM UNREF==4 ;REFERENCE DATE SAME AS LEFT HALF OF UNDATE
DEFSYM UNREFD==222000,, ;REFERENCE DATE BYTE POINTER
DEFSYM UNAUTH==111100,, ;MFD INDEX OF AUTHOR, ALL 1=> NO DIRECTORY
DEFSYM UNBYTE==001100,, ;FILE BYTE SIZE AND LENGTH INFO.
;LET S=BITS PER BYTE, C=COUNT OF UNUSED BYTES IN LAST WD
;400+100xS+C S=1 TO 3 C=0 TO 35.
;200+20xS+C S=4 TO 7 C=0 TO 8
;44+4xS+C S=8 TO 18. C=0 TO 3
;44-S S=19. TO 36. C=0
;NOTE THAT OLD FILES HAVE UNBYTE=0 => S=36.
IF1 IFDEF NUDSL, IFG NUDSL*LMNBLK+LMIBLK-2000,.ERR MFD LOSES
IFN $$TEMP,EXPUNG DEFSYM

96
src/syseng/modems.20 Executable file
View File

@@ -0,0 +1,96 @@
; -*- Midas -*-
title MODEMS - Initialize Hairy Modems
; Here in the future, modems are smarter than we are.
a=:1
b=:2
c=:3
d=:4
e=:5
t=:6
tt=:7
chttyo=:10
slose=:.lose %lssys
quit=:.logout 1,
tyo=:.iot chttyo,
define syscall name,args
.call [setz ? sixbit /name/ ? args(400000)]
termin
go: syscall sstatu,[repeat 6,[ ? movem a]]
slose
movsi b,-lmchtab
came a,mchtab(b)
aobjn b,.-1
jumpge b,done
move a,tabtab(b)
loop: hlrz b,(a)
syscall ttyvar,[movei 400000(b) ? [sixbit /TTYTYP/] ? movem c]
slose
trnn c,%tydil
jrst next
idivi b,10
hrlzi c,'T00(c)
lsh b,24.
add b,c
syscall open,[[.uao\%tjsio,,chttyo] ? b]
jrst next
syscall ttyget,[movei chttyo ? movem b ? movem b ? movem b]
slose
tlne b,%tscns
jrst next ; Don't diddle our own console!
.reset chttyo,
syscall ttyset,[movei chttyo
[<010101,,010101>*%tgact]
[<010101,,010101>*%tgact]]
slose
hrrz b,(a)
hrli b,440700
jrst outlp1
; Each character is output preceeded by a 1/3 second pause.
; Except ^P just causes a 2 second pause.
; Except ^Q outputs the next character immediately.
outlpq: ildb c,b
outlp: tyo c
outlp1: ildb c,b
cain c,^Q
jrst outlpq
cain c,^P
jrst [ MOVEI T,60. ? .SLEEP T, ? JRST OUTLP1 ] ; 2 secs
movei t,10. ; 1/3 sec
.sleep t,
jumpn c,outlp
.close chttyo,
next: aobjn a,loop
done: quit
mchtab: sixbit /AI/
sixbit /MC/
lmchtab==:.-mchtab
tabtab: -laitab,,aitab
-lmctab,,mctab
ifn <.-tabtab>-lmchtab, .err TABTAB wrong size
; On AI, T03 and T04 are connected to shitty maxel modems.
aitab: 3,,maxel
4,,maxel
laitab==:.-aitab
; On MC, T01 and T02 are connected to shitty maxel modems.
mctab: 1,,maxel
2,,maxel
lmctab==:.-mctab
maxel: asciz "+++îîîîîIîATZîATS0=1S2=26E0Q1î"
cnstnts:
constants
variables
end go

2705
src/syseng/netwrk.266 Executable file

File diff suppressed because it is too large Load Diff

3678
src/syseng/pft.149 Executable file

File diff suppressed because it is too large Load Diff