mirror of
https://github.com/PDP-10/its.git
synced 2026-03-10 04:44:26 +00:00
Added STYLOG.
This commit is contained in:
@@ -178,6 +178,7 @@ There's a [DDT cheat sheet](doc/DDT.md) for Unix users.
|
||||
- SRCCOM, Compares/merges source files, compares binary files.
|
||||
- STINK, linker.
|
||||
- STY, pseudo-terminal for multiple sessions.
|
||||
- STYLOG, convert PTY output file into ascii file.
|
||||
- SUPDUP, Supdup client.
|
||||
- SYSMSG, displays system messages.
|
||||
- TAGS, generate tags table for sources.
|
||||
|
||||
@@ -859,6 +859,10 @@ expect ":KILL"
|
||||
respond "*" ":midas sys2;ts tags_sysen2;tags\r"
|
||||
expect ":KILL"
|
||||
|
||||
# STYLOG
|
||||
respond "*" ":midas sys2;ts stylog_sysen1;stylog\r"
|
||||
expect ":KILL"
|
||||
|
||||
# ndskdmp tape
|
||||
respond "*" ":link kshack;good ram,.;ram ram\r"
|
||||
respond "*" ":link kshack;ddt bin,.;@ ddt\r"
|
||||
|
||||
293
src/sysen1/stylog.35
Normal file
293
src/sysen1/stylog.35
Normal file
@@ -0,0 +1,293 @@
|
||||
title STYLOG -- Convert a PTY output file to a ascii log file
|
||||
|
||||
X=0
|
||||
a=1
|
||||
b=2
|
||||
c=3
|
||||
d=4
|
||||
e=5
|
||||
f=6
|
||||
t=7
|
||||
tt=10
|
||||
|
||||
sp=17
|
||||
p=sp
|
||||
|
||||
pdllen==40
|
||||
buflen==1000
|
||||
|
||||
dski==1
|
||||
dsko==2
|
||||
dspc==3
|
||||
tboc==4
|
||||
tyic==5
|
||||
|
||||
call=pushj sp,
|
||||
ret=popj sp,
|
||||
pjrst==jrst ;JRST hack JRST, I.e. PUSHJ SP, ? RET
|
||||
|
||||
$$RFN==-1 ;we want the RFN routine
|
||||
$$SWITCH==-1 ;we want to handle switches
|
||||
|
||||
.insrt syseng;rfn >
|
||||
|
||||
define syscal a,b
|
||||
.call [setz ? sixbit/a/ ? b ? setz+errret+calerr] termin
|
||||
|
||||
argi==1000,,0
|
||||
val==2000,,0
|
||||
errret==3000,,0
|
||||
cnt==4000,,0
|
||||
cnti==5000,,0
|
||||
|
||||
define type &string
|
||||
move t,[440700,,[ascii string]]
|
||||
movei tt,<.length string>
|
||||
syscal siot,[argi dspc ? t ? tt]
|
||||
.lose %lsfil
|
||||
termin
|
||||
|
||||
go: move sp,[-pdllen,,pdl]
|
||||
syscal open,[cnti .uao+%TJDIS
|
||||
argi dspc
|
||||
[sixbit /TTY/]]
|
||||
.lose %lsfil
|
||||
|
||||
syscal open,[cnti .uai ;TTY input channel
|
||||
argi tyic
|
||||
[sixbit /TTY/]]
|
||||
.lose %lsfil
|
||||
|
||||
syscal open,[cnti .uio+%TJSIO ;super-image output channel
|
||||
argi tboc ; (TTY Buffer Output Channel)
|
||||
[sixbit /TTY/]]
|
||||
.lose %lsfil
|
||||
.suset [.rsnam,,ifile+$dir]
|
||||
|
||||
.break 12,[5,,jclbuf] ;Get JCL
|
||||
|
||||
skipn jclbuf ;did he give JCL?
|
||||
jrst help ; nope, give him help
|
||||
|
||||
ldb b,[350700,,jclbuf]
|
||||
camn b,"? ;asking for help?
|
||||
jrst help ; give it to him!
|
||||
|
||||
move d,[440700,,jclbuf]
|
||||
movei b,ifile ;read it as the INPUT file
|
||||
call rfn"rfn
|
||||
|
||||
skipn outp ;is this the output file instead?
|
||||
jrst indef ; no, go default the input
|
||||
|
||||
move x,[ifile,,ofile]
|
||||
blt x,ofile+3 ;make it the output file instead
|
||||
|
||||
setzm ifile
|
||||
move x,[ifile,,ifile+1] ;Clear the input file block
|
||||
blt x,ifile+3
|
||||
|
||||
movei b,ifile
|
||||
call rfn"rfn ;read the input file again.
|
||||
|
||||
indef: skipn ifile+$dev ;was the device given?
|
||||
jrst [move x,[sixbit /DSK/]
|
||||
movem x,ifile+$dev
|
||||
jrst .+1]
|
||||
skipn ifile+$fn1 ;was the FN1 specified?
|
||||
jrst [move x,[sixbit /STYOUT/]
|
||||
movem x,ifile+$fn1
|
||||
jrst .+1]
|
||||
skipn ifile+$fn2 ;was the fn2 specified?
|
||||
jrst [move x,[sixbit />/]
|
||||
movem x,ifile+$fn2
|
||||
jrst .+1]
|
||||
skipn ifile+$dir ;was the dir specified?
|
||||
.suset [.rsname,,ifile+$dir] ; use the default
|
||||
|
||||
syscal open,[cnti .uii
|
||||
argi dski
|
||||
ifile+$dev
|
||||
ifile+$fn1
|
||||
ifile+$fn2
|
||||
ifile+$dir]
|
||||
.lose %lsfil
|
||||
|
||||
outdef: skipn ttyswp ;is it /T
|
||||
skipe out ; with no output file?
|
||||
caia ; nope
|
||||
jrst out ; yes, don't write a file
|
||||
|
||||
skipn ofile+$dev ;was the default specified?
|
||||
jrst [move x,ifile+$dev
|
||||
movem x,ofile+$dev
|
||||
jrst .+1]
|
||||
skipn ofile+$fn1 ;was the fn1 specivied?
|
||||
jrst [move x,ifile+$fn1 ; no, use the input default!
|
||||
movem x,ofile+$fn1
|
||||
jrst .+1]
|
||||
skipn ofile+$fn2 ;was the fn2 spec'd?
|
||||
jrst [move x,[sixbit /STYLOG/]
|
||||
movem x,ofile+$fn2
|
||||
jrst .+1]
|
||||
skipn ofile+$dir ;was the dir spec'd?
|
||||
jrst [move x,ifile+$dir
|
||||
movem x,ofile+$dir
|
||||
jrst .+1]
|
||||
|
||||
syscal open,[cnti .uao ;open output channel
|
||||
argi dsko
|
||||
ofile+$dev
|
||||
ofile+$fn1
|
||||
ofile+$fn2
|
||||
ofile+$dir]
|
||||
.lose %lsfil
|
||||
|
||||
|
||||
out: skipe ttyswp ;are we typeing?
|
||||
jrst [type /C/ ; yes, clear the screen first!
|
||||
jrst .+1]
|
||||
|
||||
setz b, ;not at end of file...
|
||||
setz c, ;but have no characters left in buffer
|
||||
outlop: call getchr ;get a character
|
||||
skipe ttyswp ;is the /T switch on?
|
||||
.iot tboc,d ; yes, type it out
|
||||
|
||||
skipn ttyswp ;is it /T
|
||||
skipe out ; with no output file?
|
||||
caia ; nope
|
||||
jrst outlop ; yes, don't write a file
|
||||
|
||||
caige d,200 ;is it ascii?
|
||||
.iot dsko,d ; yes, output it
|
||||
|
||||
cail d,%TDMAX ;is it legal?
|
||||
jrst [type /AUnknown %TD code received!/
|
||||
jrst outlop] ;continue
|
||||
|
||||
cail d,200 ;is it a buffer code?
|
||||
xct buftab-200(d) ; yes, dispatch to an operation to handle
|
||||
;it
|
||||
jrst outlop ;keep on trucking!
|
||||
|
||||
|
||||
;;; get a eight-bit character from disk
|
||||
getchr: sosl c ;are there still chars in buffer?
|
||||
jrst [ildb d,a ; yes, get the character
|
||||
ret] ; and return it
|
||||
skipe b ;is there more?
|
||||
jrst [.close dsko, ; nope!
|
||||
.logout 1,] ; all done!
|
||||
|
||||
move a,[444400,,buffer]
|
||||
movei b,buflen
|
||||
syscal SIOT,[argi dski ? a ? b]
|
||||
.lose 1400
|
||||
move a,[441000,,buffer]
|
||||
movei c,buflen*4
|
||||
movei d,(b)
|
||||
imuli d,4
|
||||
subi c,(d) ;approximate
|
||||
jrst getchr ;and actually get the character
|
||||
|
||||
jclbuf: block 100
|
||||
|
||||
buffer: block buflen
|
||||
block 2
|
||||
|
||||
buftab: call 4flush ;200 - %TDMOV flush 4 bytes
|
||||
call 2flush ;201 - %TDMV1 flush 2 bytes
|
||||
jfcl ;202 - %TDEOF nothing I can think of
|
||||
jfcl ;203 - %TDEOL nothing I can think of
|
||||
jfcl ;204 - %TDDLF nothing I can think of
|
||||
jfcl ;205 - %TDMTF Ignore, no motors in files!
|
||||
jfcl ;206 - %TDMTN Ignore, no motors in files!
|
||||
call crlf ;207 - %TDCRL new line
|
||||
jfcl ;210 - %TDNOP nothing at all
|
||||
.iot dsko,[^H] ;211 - %TDBS backspace
|
||||
.iot dsko,[^J] ;212 - %TDLF linefeed
|
||||
.iot dsko,[^M] ;213 - %TDCR carraige return
|
||||
jfcl ;214 - %TDORS Output reset?? Foo!
|
||||
jfcl ;215 - %TDQOT quote next char
|
||||
.iot dsko,[40] ;216 - %TDFS Space forward one
|
||||
call 2flush ;217 - %TDMV0 flush 2 bytes
|
||||
call [skipe pausep ;220 - %TDCLR clear screen ... just terpri
|
||||
jrst [type /STZ/
|
||||
.iot tyic,x
|
||||
type /R/
|
||||
jrst .+1]
|
||||
pjrst crlf]
|
||||
.iot dsko,[^G] ;221 - %TDBEL [DING]
|
||||
jfcl ;222 - %TDINI System startup???
|
||||
call [call crlf ;223 - %TDILP insert line
|
||||
pjrst 1flush]
|
||||
call [call crlf ;224 - %TDDLP delete line (insert a CRLF to
|
||||
pjrst 1flush] ; avoid confusions
|
||||
jfcl ;225 - %TDICP nothing I can think of
|
||||
jfcl ;226 - %TDDCP nothing I can think of
|
||||
jfcl ;227 - %TDBOW nothing I can think of
|
||||
jfcl ;230 - %TDRST nothing I can think of
|
||||
jfcl ;231 - I dunno what this is
|
||||
jfcl ;232 - I dunno what this is
|
||||
|
||||
crlf: .iot dsko,[^M] ;CR
|
||||
.iot dsko,[^J] ;LF
|
||||
ret
|
||||
|
||||
1flush: call getchr ;Get a character
|
||||
skipe ttyswp ;type it?
|
||||
.iot tboc,d ; yes, gotta do it!
|
||||
ret
|
||||
|
||||
2flush: call 1flush ;flush twice
|
||||
pjrst 1flush
|
||||
|
||||
4flush: call 2flush ;flush twice twice
|
||||
pjrst 2flush
|
||||
|
||||
pdl: block pdllen
|
||||
|
||||
$DEV==0 ;offsets into a file block
|
||||
$FN1==1
|
||||
$FN2==2
|
||||
$DIR==3
|
||||
|
||||
IFILE: block 4 ;input file names go here
|
||||
OFILE: block 4 ;output file names go here
|
||||
outp: 0 ;non-zero if we got an output file
|
||||
|
||||
rsixtp: caie a,"/ ;is it a start of a switch?
|
||||
cain a,"(
|
||||
jrst popj1
|
||||
|
||||
caie a,"_ ;_ terminates
|
||||
ret
|
||||
setom outp ;note we got an output file first
|
||||
popj1: aos (sp) ;skip return
|
||||
ret
|
||||
|
||||
switch: cain a,"T ;is it a T?
|
||||
setom ttyswp ; yes, so we want to type
|
||||
cain a,"P ;is it a P?
|
||||
setom pausep ; yes, so we want to pause on %TDCLR
|
||||
ret
|
||||
|
||||
ttyswp: 0
|
||||
pausep: 0
|
||||
|
||||
|
||||
calerr: 0 ;error return for SYSCAL's
|
||||
|
||||
help: type /AUsage: :STYLOG <output file>_<input file>
|
||||
Default output file is to use the same FN1 as the input file
|
||||
or vice versa, and FN2 of STYLOG
|
||||
|
||||
There are 2 switches, T and P:
|
||||
T means to print the file on the TTY instead, unless an explicit output file
|
||||
was given.
|
||||
P means to pause before clearing the screen.
|
||||
/
|
||||
.logout 1,
|
||||
|
||||
end go
|
||||
Reference in New Issue
Block a user