mirror of
https://github.com/PDP-10/its.git
synced 2026-02-07 17:01:19 +00:00
201 lines
2.8 KiB
Plaintext
201 lines
2.8 KiB
Plaintext
;;;-*-Midas-*-
|
||
|
||
title SRDATE - Set File Reference Date
|
||
|
||
a=1
|
||
b=2
|
||
c=3
|
||
d=4
|
||
e=5
|
||
|
||
dski=10
|
||
erri=11
|
||
ttyo=12
|
||
|
||
x=15
|
||
y=16
|
||
p=17
|
||
|
||
call=pushj p,
|
||
return=popj p,
|
||
tyo=.iot ttyo,
|
||
|
||
define syscal op,args
|
||
.call [setz ? sixbit /op/ ? args(400000)]
|
||
termin
|
||
|
||
define princ &string&
|
||
movei y,.length string
|
||
move x,[440700,,[ascii string]]
|
||
.call sioto
|
||
.lose %lsfil
|
||
termin
|
||
|
||
define terpri
|
||
tyo [^m]
|
||
tyo [^j]
|
||
termin
|
||
|
||
loc 100
|
||
|
||
$$rfn==1
|
||
rsixtp: cain a,",
|
||
aos (p)
|
||
return
|
||
.insrt dsk:syseng;rfn
|
||
|
||
$$out==1
|
||
$$in==1
|
||
.insrt dsk:syseng;datime
|
||
|
||
pdllen==100.
|
||
.vector pdl(pdllen)
|
||
|
||
buflen==100.
|
||
.vector buf(buflen)
|
||
|
||
.scalar ndate ;the new date goes here
|
||
|
||
go: move p,[-pdllen,,pdl-1]
|
||
syscal open,[[%tjdis+.uao,,ttyo] ? [sixbit /tty/]]
|
||
.lose %lsfil
|
||
.suset [.roption,,a]
|
||
tlnn a,%opddt
|
||
jrst noddt
|
||
.break 12,[..rpfi,,file]
|
||
move b,file+1
|
||
exch b,file+3
|
||
exch b,file+2
|
||
movem b,file+1
|
||
jrst getjcl
|
||
|
||
noddt: .suset [.rhsname,,file+3]
|
||
.suset [.rxuname,,file+1]
|
||
getjcl: setzm buf
|
||
move x,[buf,,buf+1]
|
||
blt x,buf+buflen-2
|
||
setom buf+buflen-1
|
||
setzm ndate
|
||
tlnn a,%opcmd
|
||
jrst start
|
||
.break 12,[..rjcl,,buf]
|
||
movei b,file
|
||
move d,[440700,,buf]
|
||
call rfn"rfn
|
||
caie a,",
|
||
jrst start
|
||
call datime"asctwd
|
||
movem a,ndate
|
||
start: movei a,file
|
||
syscal open,[[%donlk+.uai,,dski] ? %clerr,,ercode
|
||
file ? file+1 ? file+2 ? file+3]
|
||
jrst ferr
|
||
skipe ndate
|
||
jrst doit
|
||
syscal rfdate,[movei dski ? movem ndate]
|
||
.lose %lssys
|
||
doit: move a,ndate
|
||
princ /ASetting reference date of /
|
||
.vector truef(4)
|
||
syscal rfname,[movei dski ? movem truef ? movem truef+1
|
||
movem truef+2 ? movem truef+3]
|
||
.lose %lssys
|
||
movei a,truef
|
||
call fntype
|
||
princ / to /
|
||
move a,ndate
|
||
call datype
|
||
tyo [".]
|
||
syscal srdate,[movei dski ? ndate]
|
||
.lose %lssys
|
||
.suset [.roption,,a]
|
||
tlnn a,%opddt
|
||
jrst die
|
||
move a,file+3
|
||
exch a,file+1
|
||
exch a,file+2
|
||
movem a,file+3
|
||
.break 12,[..spfi,,file]
|
||
jrst die
|
||
|
||
.scalar ercode
|
||
ferr: princ /AError: /
|
||
call fntype
|
||
tyo [40]
|
||
err: syscal open,[[.uai,,erri] ? [sixbit /err/] ? movei 4 ? ercode]
|
||
.lose %lssys
|
||
errlp: .iot erri,a
|
||
caige a,40
|
||
jrst [ tyo [".]
|
||
jrst die]
|
||
cail a,"A
|
||
caile a,"Z
|
||
skipa
|
||
addi a,"a-"A
|
||
tyo a
|
||
jrst errlp
|
||
|
||
die: skipe debug
|
||
.value
|
||
.logout 1,
|
||
|
||
;;;Type out the date in A (clobbers the buffer and D)
|
||
datype: move d,[440700,,buf]
|
||
call datime"twdasc
|
||
sub d,[010700,,buf-1]
|
||
hrrz y,d
|
||
imuli y,5
|
||
lsh d,-30.
|
||
idivi d,7
|
||
sub y,d
|
||
move x,[440700,,buf]
|
||
.call sioto
|
||
.lose %lssys
|
||
return
|
||
|
||
;;;Type out the filename in block pointed to by A:
|
||
fntype: push p,(a)+2
|
||
push p,(a)+1
|
||
push p,(a)+3
|
||
move a,(a)
|
||
call 6type
|
||
tyo [":]
|
||
pop p,a
|
||
call 6type
|
||
tyo [";]
|
||
pop p,a
|
||
call 6type
|
||
tyo [40]
|
||
pop p,a
|
||
|
||
;falls through
|
||
|
||
;;;Type out A as a word of sixbit:
|
||
6type: ldb x,[360600,,a]
|
||
addi x,40
|
||
tyo x
|
||
lsh a,6
|
||
jumpn a,6type
|
||
return
|
||
|
||
sioto: setz
|
||
sixbit /siot/
|
||
movei ttyo
|
||
move x
|
||
setz y
|
||
|
||
cnstnts:
|
||
constants
|
||
|
||
debug: 0 ;debuging?
|
||
|
||
file: sixbit /dsk/
|
||
-1
|
||
sixbit />/
|
||
-1
|
||
|
||
variables
|
||
|
||
end go
|
||
|