1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-23 19:07:45 +00:00
Eric Swenson 38d430bb23 Added FED.
Resolves #289.
2016-12-19 12:09:34 +01:00

126 lines
2.4 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.begin FNR
;its style command line scanner
; non-skip return for null file spec
;clobbers acs with reckless abandon
break=1 ;returns with character that broke scan
in=2 ;xct'ing causes next character to appear in break
brktab=3 ;AOBJN pointer to break table
dev=4 ;returns dev,fn1,fn2,sname
fn1=5
fn2=6
sname=7
ac=10
char=11
acptr=12
temp=13
limbo=14 ;scanner read ahead character
;cannot leave name until zero
getcc: 0 ;get character for command line scanner
skipn break,limbo
xct in
setzm limbo
jrst @getcc
name: 0 ;break off word from input stream
na1: jsr getcc
caie break,40 ;ignore leading spaces
cain break,11 ;tabs too
jrst na1
move acptr,[440600,,ac]
tdza ac,ac
name1: jsr getcc
jsr brktst
jrst nambrk ;found a break character
name2: tlne acptr,770000 ;ignore everything after 6 characters
idpb char,acptr
jrst name1
nambrk: jumpn char,@name ;no trailing spaces
nambr1: jsr getcc
caie break,40 ;ignore trailing spaces
cain break,11
jrst nambr1
cain break,^Q ;the next character will not break
jrst nambr2
jsr brktst
jrst @name ;a break character
nambr2: movem break,limbo ;space broke us
movei break,40
jrst @name
;converts break to sixbit and puts result in char
;^Q quotes next character
;fails to skip on break character
brktst: 0
cain break,11
movei break,40
jsr sixtst
jumpl char,[ caie break,21 ;^Q
jrst @brktst ;non-sixbit breaks us
jsr getcc
jsr sixtst
jumpl char,@brktst ;non-sixbit
jrst brkt1]
jumpe char,@brktst
caie char,':
cain char,';
jrst @brktst
skipl temp,brktab
jrst brkt1
camn break,(temp)
jrst @brktst
aobjn temp,.-2
brkt1: aos brktst ;whew!
jrst @brktst
;convert break to sixbit
sixtst: 0
movni char,1
cail break,40
caile break,"_
jrst sixt1 ;might be lower case
movei char,-40(break)
jrst @sixtst
sixt1: cail break,"a
caile break,"z
jrst @sixtst
movei char,<"A-"a-40>(break)
jrst @sixtst
;this routine scans command line for file specification
getfil:0
setzb fn1,fn2
setzb dev,sname
setzm limbo
jsr name
jumpe ac,@getfil
aosa getfil
getf1: jsr name ;break off first name
jumpe ac,@getfil ;let initl worry about it
cain break,":
jrst [ move dev,ac
jrst getf1]
cain break,";
jrst [ move sname,ac
jrst getf1]
;this must be fn1 or fn2
caie break,40
jrst [ jumpn fn1,[ move fn2,ac
jrst @getfil]
move fn1,ac
jrst @getfil]
jumpn fn1,[ move fn2,ac
jrst getf1]
move fn1,ac
jrst getf1
.end