1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-15 08:03:19 +00:00

Build DIR.

This commit is contained in:
Lars Brinkhoff 2016-11-27 22:30:42 +01:00 committed by Eric Swenson
parent 26df9785e1
commit 05c496162e
3 changed files with 224 additions and 1 deletions

View File

@ -1,6 +1,6 @@
EMULATOR ?= simh
SRC = system syseng sysen1 sysen2 sysnet kshack dragon channa midas _teco_ emacs rms klh syshst sra mrc ksc cstacy gren
SRC = system syseng sysen1 sysen2 sysnet kshack dragon channa midas _teco_ emacs rms klh syshst sra mrc ksc cstacy gren bawden
DOC = info _info_ sysdoc kshack _teco_ emacs emacs1
MINSYS = _ sys sys2 sys3 device emacs _teco_ sysbin inquir

View File

@ -313,6 +313,9 @@ respond "*" ":link channa; rakash pfthmg,dragon; rakash pfthmg\r"
respond "*" ":link sys; ts p,sys; ts peek\r"
respond "*" ":midas sys1;ts dir_bawden;dir^k\r"
expect ":KILL"
respond "*" ":midas kshack;ts mtboot_kshack;mtboot\r"
expect ":KILL"

220
src/bawden/dir^k.42 Executable file
View File

@ -0,0 +1,220 @@
; -*- Midas -*-
TITLE DIR
A=1
B=2
C=3
D=4
E=5
F=6
LINES=7 ; Lines on screen
LLINES=10 ; Lines on last page
OPTS=11 ; .OPTION bits
ERR=14
IN=15
OUT=16
DIR=17
NPTRS==:200.
GO: .OPEN OUT,[.UAO\%TJDIS,,'TTY ? SETZ ? SETZ]
.LOSE
.OPEN IN,[.UAI,,'TTY ? SETZ ? SETZ]
.LOSE
.CALL [ SETZ
SIXBIT /TTYVAR/
MOVEI OUT
MOVE [SIXBIT /HEIGHT/]
SETZM LINES]
.lose %lssys
SUBI LINES,1
CAILE LINES,NPTRS
MOVEI LINES,NPTRS
.suset [.rsname,,dirdir]
.suset [.roption,,opts]
tlne opts,%opbrk
.break 12,[..rpfi,,dirblk]
tlnn opts,%opcmd
jrst godoit
.BREAK 12,[..RJCL,,BUF]
SKIPN BUF
JRST GODOIT
movsi a,(sixbit /DSK/) ; If there is JCL, device defaults to DSK.
movem a,dirdev
MOVE A,[440700,,BUF]
GETNAM: MOVE B,[440600,,C]
SETZ C,
GETNM1: ILDB D,A
JUMPE D,JDONE
CAIN D,^M
JRST JDONE
CAIE D,^_
CAIN D,^C
JRST JDONE
CAIN D,":
JRST COLON
CAIN D,";
JRST SEMI
CAIN D,40
JRST SEMI
CAIL D,140
SUBI D,40
SUBI D,40
TLNE B,770000
IDPB D,B
JRST GETNM1
COLON: JUMPE C,GETNAM
movem c,dirdev
JRST GETNAM
SEMI: JUMPE C,GETNAM
movem c,dirdir
JRST GETNAM
JDONE: JUMPE C,GODOIT
movem c,dirdir
GODOIT: .call [ setz ? sixbit /OPEN/
movsi .uai
movei dir
move dirdev
move [sixbit /.FILE./]
move [sixbit /(DIR)/]
setz dirdir ]
JRST LOSE
tlne opts,%opbrk
.break 12,[..spfi,,dirblk]
setzm incnt ; No characters available
FILL: MOVE B,[440700,,BUF]
MOVN C,LINES
HRLZ C,C ; C: AOBJN into PTRS
SETZM PTRS ; 0 => blank
MOVE A,[PTRS,,PTRS+1] ; -1 => printed
BLT A,PTRS-1(LINES) ; else BP to string
FILL1: MOVEM B,PTRS(C)
FILL2: sosge incnt
jrst infill
ildb a,inbp
IDPB A,B
CAIN A,^L
JRST ENDDIR
CAIE A,^J
JRST FILL2
AOBJN C,FILL1
JRST ENDPAG
.vector inbuf(linbuf==:1000.)
.scalar incnt
.scalar inbp
infill: move d,[440700,,inbuf]
movem d,inbp
movei e,5*linbuf
.call [ setz ? sixbit /SIOT/
movei dir
move d
setz e ]
.lose %lssys
movei d,5*linbuf
subi d,(e)
movem d,incnt
jumpn d,fill2
MOVEI A,^L
IDPB A,B
ENDDIR: SETZM PTRS(C)
HRRZM C,LLINES
ENDPAG: MOVE C,LINES
.RDTIM D,
FIND: IMULI D,317421
ADDI D,512642
MOVE E,D
IDIV E,LINES
MOVNI B,1
MOVE E,F
FIND1: CAME B,PTRS(F) ; Printed?
JRST FOUND ; No
SOJGE F,FIND1 ; Yes: search backwards
MOVEI F,-1(LINES)
JRST FIND1
FOUND: ADDI F,10
.IOT OUT,[^P]
.IOT OUT,["H]
.IOT OUT,[10]
.IOT OUT,[^P]
.IOT OUT,["V]
.IOT OUT,F
.IOT OUT,[^P]
.IOT OUT,["L]
SKIPN E,PTRS-10(F) ; Blank?
JRST LINEND ; Yes
LINE: ILDB B,E ; No: print it
CAIN B,^M
JRST LINEND
.IOT OUT,B
JRST LINE
LINEND: SETOM PTRS-10(F)
SOJG C,FIND
CAIN A,^L
JRST BYEBYE
.IOT OUT,[^P]
.IOT OUT,["H]
.IOT OUT,[10]
.IOT OUT,[^P]
.IOT OUT,["V]
MOVEI F,10(LINES)
.IOT OUT,F
.IOT OUT,[^P]
.IOT OUT,["L]
SKIPA B,[440700,,[ASCIZ \--MORE--\]]
MORE: .IOT OUT,A
ILDB A,B
JUMPN A,MORE
.IOT IN,A
CAIE A,40
JRST FLUSH
.IOT OUT,[^P]
.IOT OUT,["H]
.IOT OUT,[10]
.IOT OUT,[^P]
.IOT OUT,["L]
JRST FILL
FLUSH: SKIPA B,[440700,,[ASCIZ \FLUSHED\]]
FLUSH1: .IOT OUT,A
ILDB A,B
JUMPN A,FLUSH1
BYEBYE: .IOT OUT,[^P]
.IOT OUT,["H]
.IOT OUT,[10]
.IOT OUT,[^P]
.IOT OUT,["V]
MOVEI F,10(LLINES)
.IOT OUT,F
.IOT OUT,[^P]
.IOT OUT,["L]
.BREAK 16,164000 ; 2.3 => Don't crlf, close open location, etc.
LOSE: .OPEN ERR,[.UAI,,'ERR ? 1 ? 0]
.LOSE
LOSE1: .IOT ERR,A
CAIN A,^L
.BREAK 16,164000 ; 2.3 => Don't crlf, close open location, etc.
.IOT OUT,A
JRST LOSE1
dirblk::
dirdev: sixbit /DSK/
dirdir: -1
0
0
PTRS: BLOCK NPTRS
BUF: BLOCK NPTRS*40. ; 200. character lines
END GO