home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
archives
/
kermit11.zip
/
k11st1.mac
< prev
next >
Wrap
Text File
|
1989-06-13
|
23KB
|
989 lines
.title k11st1 the SET command,overlay one
.ident /2.0.43/
.if ndf, K11INC
.ift
.include /IN:K11MAC.MAC/
.include /IN:K11CDF.MAC/
.endc
.macro decout val
mov val ,-(sp)
call numout
.endm decout
.enabl gbl
.enabl lc
.psect $code
$cmglob = 0
; Copyright (C) 1984 Change Software, Inc.
;
; 31-Jan-84 15:13:45 Brian Nelson
;
; Removed SET command code from K11CMD.MAC for space saving via
; placement into an overlay.
global <argbuf,argpnt>
.psect $code
.sbttl things from k11st0 needed in k11st1
.enabl lsb
sd$off: bic #log$al ,trace ; clear all debug bits now
bit #log$op ,trace ; is there a log file open ?
beq 20$ ; no
calls close ,<#lun.lo> ; close it
bic #log$op ,trace ; say it's closed please
message <Debug file closed>,cr
20$: clr r0
return
ttchk: tstb ttname ; insure a line is set
beq 10$ ; ok
clc
return
10$: message <Please use the SET LINE command>,cr
sec
return
.dsabl lsb
.sbttl set block-check-type
set$bl::calls getcm0 ,<argpnt,#blklst>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
clr r0 ; no errors
110$: return
$cmglob = 0
command blklst ,1_CHARACTER_CHECKSUM ,1 ,sbl$1
command blklst ,2_CHARACTER_CHECKSUM ,1 ,sbl$2
command blklst ,3_CHARACTER_CRC_CCITT ,1 ,sbl$3
command blklst ,1-CHARACTER-CHECKSUM ,1 ,sbl$1
command blklst ,2-CHARACTER-CHECKSUM ,1 ,sbl$2
command blklst ,3-CHARACTER-CRC-CCITT ,1 ,sbl$3
command blklst ,ONE_CHARACTER_CHECKSUM ,3 ,sbl$1
command blklst ,TWO_CHARACTER_CHECKSUM ,3 ,sbl$2
command blklst ,THREE_CHARACTER_CRC_CCITT,3 ,sbl$3
command blklst ,ONE-CHARACTER-CHECKSUM ,3 ,sbl$1
command blklst ,TWO-CHARACTER-CHECKSUM ,3 ,sbl$2
command blklst ,THREE-CHARACTER-CRC-CCITT,3 ,sbl$3
command blklst
sbl$1: movb #'1 ,setrec+p.chkt
movb #'1 ,setsen+p.chkt
return
sbl$2: movb #'2 ,setrec+p.chkt
movb #'2 ,setsen+p.chkt
return
sbl$3: movb #'3 ,setrec+p.chkt
movb #'3 ,setsen+p.chkt
return
global <argbuf ,conpar ,setrec ,setsen ,senpar>
.sbttl set dtr and hangup line
set$dt::call ttchk ; must have already done a SET LINE
bcs 100$ ; oops
calls ttydtr ,<#ttname> ; try to raise DTR on the line
tst r0 ; did it work ?
beq 100$ ; yes
direrr r0 ; no, emit a message as to why
100$: clr r0 ; and exit
return
c$disc::
c$hang::$name <HAN>
set$hu::call ttchk ; must have already done a SET LINE
bcs 100$ ; oops
calls ttyhang ,<#ttname> ; try to hang up the line
tst r0 ; did it work ?
beq 100$ ; yes
direrr r0 ; no, emit a message as to why
clr r0
return
100$: message <KERMIT link >
print #ttname
message < disconnected>,cr
return
global <ttname>
.sbttl set filetype
set$fi::calls getcm0 ,<argpnt,#setfil>
tst r0 ; did we find a keyword ?
bmi 100$ ; no
jsr pc ,@r1 ; yes, dispatch on it please
100$: return
sf$typ: mov argpnt ,r0 ; this is a KLUDGE, ignore 'TYPE'
10$: tstb @r0 ; find EOS as of yet ?
beq 90$ ; yes, exit with an error
cmpb (r0)+ ,#40 ; found a delimiter yet ?
bne 10$ ; no, keep looking
calls getcm0 ,<r0,#setfil> ; yes, recheck the table for type
tst r0 ; did it work ?
bmi 90$ ; no
jsr pc ,@r1 ; yes, dispatch on it please
clr r0 ; no errors
br 100$ ; exit
90$: mov #-1 ,r0 ; error
100$: return
sf$asc: mov #text ,$image ; imagemode := false
message <Ascii text mode set>,cr; confirm it
clr r0 ; no errors
return ; bye
sf$bin: call xbin
mov #binary ,$image ; imagemode := true
message <Binary mode set>,cr ; confirm it
clr r0 ; no errors
return ; bye
sf$dec: call xbin ; SF$DEC added /52/
MESSAGE <DEC_Multinational mode set>,CR
mov #DECNAT ,$image
clr r0 ; No errors
return ; Exit
sf$aut: mov sp ,doauto ; allow checking of file type and
clr r0 ; attributes to see if the file should
return ; be sent as a binary file
sf$noa: clr doauto ; never check the file out
clr r0 ; no errors
return
sf$sup: clr filprot ; supercede created files
clr r0
return
sf$nos: mov sp ,filprot ; do not supercede files
clr r0
return
.enabl lsb
xbin: tstb parity
beq 100$
cmpb parity ,#par$no ; has it been set to none ?
beq 100$ ; yes
message <The other Kermit must be able to support 8 bit prefixing>,cr
message <Without this feature, the high bit will be lost on every>,cr
message <character sent>,cr
message
100$: return
.dsabl lsb
command setfil ,SUPERCEDE ,2 ,sf$sup
command setfil ,NOPROTECT ,3 ,sf$sup
command setfil ,NOSUPERCEDE ,3 ,sf$nos
command setfil ,PROTECT ,2 ,sf$nos
command setfil ,7_BIT ,1 ,sf$asc
command setfil ,7-BIT ,1 ,sf$asc
command setfil ,8_BIT ,1 ,sf$dec
command setfil ,8-BIT ,1 ,sf$dec
command setfil ,ASCII ,2 ,sf$asc
command setfil ,BINARY ,2 ,sf$bin
command setfil ,EIGHT ,2 ,sf$bin
command setfil ,SEVEN ,2 ,sf$asc
command setfil ,EIGHT_BIT ,2 ,sf$dec
command setfil ,SEVEN_BIT ,2 ,sf$asc
command setfil ,EIGHT-BIT ,2 ,sf$dec
command setfil ,SEVEN-BIT ,2 ,sf$asc
command setfil ,FIXED ,2 ,sf$bin
command setfil ,IMAGE ,2 ,sf$bin
command setfil ,AUTO ,3 ,sf$aut
command setfil ,NOAUTO ,3 ,sf$noa
command setfil ,TYPE ,3 ,sf$typ
command setfil ,TEXT ,2 ,sf$asc
command setfil ,TXT ,2 ,sf$asc
command setfil ,DEC_MULTINATIONAL,2 ,sf$dec
; The following two added /54/ 09-Sep-86 14:48:42 to resolve
; problems accessing decnet files.
command setfil ,NAMES ,2 ,sf$nam
command setfil ,NAMING ,2 ,sf$nam
command setfil
.ASSUME TEXT EQ 0
.ASSUME BINARY EQ 1
.ASSUME DECNAT EQ 2
global <argbuf ,$image>
.sbttl SET FILE NAM option ; Added /54/ 09-Sep-86 14:46:48
sf$nam: mov argpnt ,r0 ; /54/ Get current pointer
10$: tstb @r0 ; /54/ Find EOS as of yet ?
beq 90$ ; /54/ Yes, exit with an error
cmpb (r0)+ ,#40 ; /54/ Found a delimiter yet ?
bne 10$ ; /54/ No, keep looking
calls getcm0 ,<r0,#sfname> ; /54/ Yes, recheck the table for type
tst r0 ; /54/ Did it work ?
bmi 90$ ; /54/ No
jsr pc ,@r1 ; /54/ Yes, dispatch on it please
clr r0 ; /54/ No errors
br 100$ ; /54/ Exit
90$: mov #-1 ,r0 ; /54/ Error
100$: return
sfn$tr: clr rawfil ; /54/ The default, always convert
return ; /54/ Exit
sfn$fu: mov sp ,rawfil ; /54/ Don't remove extra stuff, like
return ; /54/ node names and so on.
command sfname ,CONVERTED ,1 ,sfn$tr
command sfname ,FULL ,1 ,sfn$fu
command sfname ,LITERAL ,1 ,sfn$fu
command sfname ,TRANSLATED ,1 ,sfn$tr
command sfname
GLOBAL <rawfil> ; End /54/ edits
.sbttl set BINARY-TYPE .ext
.enabl lsb
set$bi::save <r1,r2,r3> ; save work registers please
sub #100 ,sp ; allocate some work space
mov sp ,r3 ; and a pointer to it please
clrb @r3 ; insure .asciz
mov argpnt ,r2 ; get the argbuf pointer now
cmpb @r2 ,#'. ; is there a leading dot ?
beq 10$ ; yes
movb #'. ,(r3)+ ; no, insert one please
clrb @r3 ; asciz please
10$: strcat r3 ,r2 ; concat the filetype now
mov sp ,r3 ; point back to the buffer
strlen r3 ; get the length
cmp r0 ,#4 ; it must be exactly 4 chars
beq 20$ ; ok
message <The filetype must be of the form .xyz>,cr
message <as in: SET BIN .SAV or SET BIN .TSK>,cr
br 90$ ; error exit
20$: tst binset ; have we been here before
bne 30$ ; yes
message <The default binary filetype list has been deleted>,cr
mov bintyp ,r1
clrb @r1 ; insure that it's been done
mov sp ,binset ; flag we have been here before
30$: strcat bintyp ,r3 ; concat the new one onto the list
clr r0 ; exit with success
br 100$ ; exit
90$: mov #-1 ,r0 ; failure
100$: add #100 ,sp ; pop local buffer and then ....
unsave <r3,r2,r1> ; pop registers
return ; bye
.dsabl lsb
.sbttl more set routines
; SET$DF set a default filename string for all file opens
; and creates.
.enabl lsb
set$df::copyz argpnt ,#defdir,#filsiz; setup a default directory
calls fparse ,<#200$,#filnam>; try to parse it to see if
tst r0 ; if the string is valid
beq 10$ ; ok
message <Error from $PARSE - > ;
direrr r0 ; no, print the error out
clrb defdir
br 100$
10$: message <Directory for files set to >
print #defdir
message
100$: clr r0
return
.save
.psect $PDATA ,D
200$: .asciz /JUNK.DAT/
.even
.restore
global <filsiz>
.dsabl lsb
set$ho::clrb defdir
message <Directory set back to none (SY:)>,cr
clr r0
return
; S E T $ L O
;
; SET LOGFILE filespec
;
; set and create the logfile
.enabl lsb
c$logf::
set$lo::call sd$off ; insure previous file is closed
tst logapp ; /41/ Append log files?
bne 10$ ; /41/ Yes
calls create ,<argpnt,#lun.lo,#text>; handle SET DEBUG FILE filename
br 20$ ; /41/ Check for errors
10$: calls append ,<argpnt,#lun.lo,#text>; handle SET DEBUG FILE filename
20$: tst r0 ; did the logfile create work ?
beq 30$ ; yes
direrr r0 ; no,print the error out
return
30$: bis #log$op ,trace ; yes, say it's open please
copyz argpnt ,#logfil,#30 ; save the debug filename for show
tst infomsg ; /41/ Verbose today?
beq 100$ ; /41/ No
message <Opened Log_file > ; /41/ say we did it
print argpnt ; at last, confirm the logfile name
message ; crlf
100$: return ; exit
global <argbuf ,defdir,logapp>
.dsabl lsb
.sbttl set send and set receive
.enabl lsb
set$wi::message <Kermit-11 supports the LONG PACKET extension.>,cr
message <It does not support SLIDING WINDOWS>,cr
clr r0
return
set$rc::mov #reclst ,r3
call 200$
tst r0
beq 10$
message <%SET-W Unknown option in SET RECEIVE>,cr
10$: return
set$sn::mov #senlst ,r3
call 200$
tst r0
beq 20$
message <%SET-W Unknown option in SET SEND>,cr
20$: return
200$: calls getcm0 ,<argpnt,r3> ; find out which option was given
tst r0 ; did we find the option ?
bmi 300$ ; no
220$: calls getcm1 ,<argpnt,r3,r0> ; yes, look for value clause now
tst r0 ; find it (or read it?)
bmi 300$ ; no
mov argbuf ,argpnt ; yes. GETCM1 always returns in ARGBUF
jsr pc ,@r1 ; dispatch to correct action
br 310$ ; and exit
300$: mov #1 ,r0 ; exit on error
310$: mov argbuf ,argpnt ; insure argpnt is reset to default
return ; exit
.dsabl lsb
command reclst ,END-OF-LINE ,3 ,set$eo,<EOLN char ? >,string
command reclst ,PACKET-SIZE ,3 ,str$pl,<Packet Length ? >,decnum
command reclst ,PACKET-LENGTH ,3 ,str$pl,<Packet Length ? >,decnum
command reclst ,PAUSE ,3 ,set$ps,<Pause time ? >,decnum
command reclst ,START-OF-PACKET,3 ,str$so,<Octal valule of SOH ? >,octnum
command reclst ,START_OF_PACKET,3 ,str$so,<Octal valule of SOH ? >,octnum
command reclst ,TIMEOUT ,3 ,set$ti,<Packet timeout ? >,decnum
command reclst ,PADCHARACTER ,4 ,str$pd,<Padding char (octal) ? >,octnum
command reclst ,PADDING ,4 ,str$pn,<Number of pad chars ? >,decnum
command reclst
command senlst ,END-OF-LINE ,3 ,set$eo,<EOLN char ? >,string
command senlst ,PACKET-LENGTH ,3 ,sts$pl,<Packet Length ? >,decnum
command senlst ,PACKET-SIZE ,3 ,sts$pl,<Packet Length ? >,decnum
command senlst ,PAUSE ,3 ,set$ps,<Pause time ? >,decnum
command senlst ,START-OF-PACKET,3 ,sts$so,<Octal valule of SOH ? >,octnum
command senlst ,START_OF_PACKET,3 ,sts$so,<Octal valule of SOH ? >,octnum
command senlst ,TIMEOUT ,3 ,set$ti,<Packet timeout ? >,decnum
command senlst ,PADCHARACTER ,4 ,sts$pd,<Padding char (octal) ? >,octnum
command senlst ,PADDING ,4 ,sts$pn,<Number of pad chars ? >,decnum
command senlst ,XON ,3 ,sts$xo
command senlst ,NOXON ,3 ,sts$nx
command senlst
.sbttl set end-of-line octalvalue, set packetlength and set pause
sts$so: call setsop
tst r0
bne 100$
mov r1 ,sensop
100$: return
str$so: call setsop
tst r0
bne 100$
mov r1 ,recsop
100$: return
set$so::call setsop
tst r0
bne 100$
mov r1 ,recsop
mov r1 ,sensop
100$: return
setsop: calls octval ,<argpnt> ; get the octal value
tst r0 ; check for errors
bne 80$ ; exit if so
tst r1 ; insure in range 1..36
beq 90$ ; no, exit
cmp r1 ,#36 ; ...
bgt 90$ ; ...
80$: return
90$: message <The SOH character must be between 1 and 36 octal>,cr
mov #1 ,r0
return
global <recsop ,sensop>
sts$xo: mov sp ,prexon ; /53/ Prefix packets with XON
clr r0 ; /53/ Success
return ; /53/ Exit
sts$nx: clr prexon ; /53/ Don't prefix with XON
clr r0 ; /53/ Success
return ; /53/ Exit
GLOBAL <PREXON> ; /53/ Defined in K11DAT
set$eo::calls octval ,<argpnt> ; get the octal value now
tst r0 ; did it work ?
bne 100$ ; no
movb r1 ,senpar+p.eol ; yes,stuff it in there please
movb r1 ,setsen+p.eol ; yes,stuff it in there please
clr r0
100$: return ; bye
set$ps::calls l$val ,<argpnt> ; get the value
tst r0 ; well ?
bne 100$ ; no, bad value
mov r1 ,pauset ; ok
100$: return
set$dl::calls l$val ,<argpnt> ; get the value
tst r0 ; well ?
bne 100$ ; no, bad value
mov r1 ,sendly ; ok
100$: return
global <argbuf ,conpar ,conesc ,pauset ,sendly>
.sbttl set rec pac and set sen pac
.enabl lsb
str$pl: strcmp argpnt ,#ps$max ; /43/ Was it SET REC PAC MAX?
tst r0 ; /43/ Well?
bne 5$ ; /43/ No
call inqbuf ; /43/ Yes, find out what this
mov r0 ,r1 ; /43/ Save it here and then be
tst infomsg ; /43/ Being verbose today?
beq 10$ ; /43/ Not really.
message <Receive buffer size set to > ; /43/
decout r1 ; /43/ Tell user what we set it to
message ; /43/
br 10$ ; /43/ be off to common code.
5$: calls l$val ,<argpnt> ; /43/ Get the user's size
tst r0 ; /43/ Successful?
bne 100$ ; /43/ No, just exit then
cmp r1 ,#96. ; /43/ huge packets today?
bgt 10$ ; /43/ Yes
movb r1 ,setrec+p.spsiz ; /43/ set up it
movb r1 ,senpar+p.spsiz ; /43/ It actually goes HERE
clr reclng ; /43/ Clear this
br 30$ ; /43/ And reset MAXL1 and MAXL2
10$: call inqbuf ; /43/ Find out MAX buffer size
cmp r0 ,#MAXLNG ; /43/ Will this fit internally?
blos 15$ ; /43/ Yes
mov #MAXLNG ,r0 ; /43/ No, reset it please
15$: cmp r1 ,#MAXLNG ; /43/ Will this fit within the
blos 16$ ; /43/ Kermit-11 internal buffers?
mov #MAXLNG ,r1 ; /43/ No, reset to max we allow.
message <This size exceeds Kermit-11's internal buffering of >,cr
decout r1 ; /43/ Inform them and reset it
message < bytes. It has been reset to that value>,cr ; /43/ Warning
16$: cmp r1 ,r0 ; /43/ Will the user's size fit?
blos 20$ ; /43/ Yes
tst infomsg ; /43/ Really print this message?
beq 20$ ; /43/ No
message <This packet size exceeds the host's input buffer size of>,cr
decout r0 ; /43/
message < bytes. This may cause the line/port driver to loose>,cr
message <data at rates greater than 2400 baud.>,cr
20$: mov r1 ,reclng ; /43/ Setup this parameter
30$: clr r0 ; /43/ Now setup for divide by 95
div #95. ,r0 ; /43/ Simple
movb r0 ,setrec+p.mxl1 ; /43/ Insert it into parameters
movb r0 ,senpar+p.mxl1 ; /43/ Insert it into parameters
movb r1 ,setrec+p.mxl2 ; /43/ Insert it into parameters
movb r1 ,senpar+p.mxl2 ; /43/ Insert it into parameters
clr r0 ; /43/ No errors
100$: return ; /43/ Exit
.dsabl lsb
sts$pl: call plc ; /43/ Get the value
bcs 100$ ; /43/ Oops
movb r1 ,setsen+p.spsiz ; /43/ set up it
movb r1 ,conpar+p.spsiz ; /43/ It actually goes HERE
100$: return ; /43/ Exit
.enabl lsb
plc: calls l$val ,<argpnt> ; set the arguement now
tst r0 ; did it work ?
bne 120$ ; no
cmp r1 ,#20. ; minimum of twenty
blo 110$ ; too small
cmp r1 ,#96. ; /43/ Large ?
blo 90$ ; /43/ No
br 110$ ; /43/
90$: clr r0
100$: return
110$: message <The packet size must normally be in the range 20..94>,cr
120$: sec
return
.save
.psect $PDATA,d
ps$max: .asciz /MAX/
.even
.restore
.dsabl lsb
.sbttl Set RECEIVE, Set SEND Padding, Padcharacter
; Added /57/ Brian Nelson 17-Jul-87 08:52:30
sts$pd::calls octval ,<argpnt> ; get the octal value now
tst r0 ; did it work ?
bne 100$ ; no
movb r1 ,senpar+p.padc ; yes,stuff it in there please
movb r1 ,setsen+p.padc ; yes,stuff it in there please
100$: return ; bye
sts$pn::calls l$val ,<argpnt> ; get the value
tst r0 ; well ?
bne 100$ ; no, bad value
mov r1 ,senpar+p.npad ; ok
mov r1 ,setsen+p.npad ; ok
100$: return
str$pd::calls octval ,<argpnt> ; get the octal value now
tst r0 ; did it work ?
bne 100$ ; no
movb r1 ,recpar+p.padc ; yes,stuff it in there please
movb r1 ,setrec+p.padc ; yes,stuff it in there please
100$: return ; bye
str$pn::calls l$val ,<argpnt> ; get the value
tst r0 ; well ?
bne 100$ ; no, bad value
mov r1 ,recpar+p.npad ; ok
mov r1 ,setrec+p.npad ; ok
100$: return
.sbttl set escape whatever and set retry
.enabl lsb
set$es::calls octval ,<argpnt> ; get the octal value now
tst r0 ; did it work ?
bne 100$ ; no
cmpb r1 ,#40 ; must be a control character
blo 10$ ; ok
message <The escape character must be a control character>,cr
br 20$ ; exit
10$: mov r1 ,conesc ; store it
20$: return
set$re::calls l$val ,<argpnt> ; SET RETRY decimal number
tst r0 ; well ?
bne 100$ ; no, bad value
cmp r1 ,#3 ; a reasonable minimum ?
bhis 30$ ; ok
message <RETRY should be between 3 and 30>,cr
return
30$: mov r1 ,maxtry ; ok
40$: return
set$ti::calls l$val ,<argpnt> ; SET TIMEOUT decimal number
tst r0 ; well ?
bne 100$ ; no, bad value
cmp r1 ,#4 ; a reasonable minimum ?
blo 50$ ; ok
cmp r1 ,#60. ; a reasonable maximum ?
blos 60$ ; yes
50$: message <TIMEOUT should be between 4 and 60>,cr
return
60$: movb r1 ,conpar+p.time ; alter remotes sinit default
movb r1 ,setrec+p.time ; show thats it's been set
100$: return
global <argbuf ,conesc ,conpar ,maxtry ,setrec>
.dsabl lsb
.sbttl set record-format (highly RMS11 dependant)
set$rf::calls getcm0 ,<argpnt,#rfmlst>; find out which option was given
tst r0
bmi 100$
jsr pc ,@r1
clr r0
100$: return
srf$st: clr df$rat ; stream ascii please for RSTS?
movb #fb$stm ,df$rfm ; say so and exit
return
srf$va: movb #fb$cr ,df$rat ; must have this for RSX?
movb #fb$var ,df$rfm ; r.var and fd.cr
return
global <df$rat ,df$rfm ,fb$cr ,fb$stm ,fb$var>
command rfmlst ,STREAM ,3 ,srf$st
command rfmlst ,VARIABLE,3 ,srf$va
command rfmlst
.sbttl enable or disable attribute packet transmission
set$at::calls getcm0 ,<argpnt,#onoff>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
mov r0 ,sendat ; /42/
clr r0 ; /42/
110$: return
set$lp::calls getcm0 ,<argpnt,#onoff>; /42/ find out which option was given
tst r0 ; /42/ did we find one
bmi 110$ ; /42/ no
jsr pc ,@r1 ; /42/ dispatch now
mov r0 ,dolong ; /42/
clr r0 ; /42/
110$: return
st$nat::clr doattr
clr r0
return
st$nlp::clr dolong
clr r0
return
cm$glob = 0
command onoff ,OFF ,3 ,s$of ; /42/ Change names
command onoff ,ON ,2 ,s$on ; /42/ Change names
command onoff ,NONE ,3 ,s$of ; /42/ Change names
command onoff ; /42/ Change names
s$of: clr r0
return
s$on: mov sp ,r0
return
global <sendat ,dolong>
set$pr::copyz argpnt ,#prompt,#20.
clr r0
return
global <prompt ,argbuf>
.sbttl error debugging
set$se::calls l$val ,<argpnt> ; SET SEED decimal number
tst r0 ; well ?
bne 100$ ; no, bad value
mov r1 ,testc ; save it
100$: return
set$ra::calls getcm0 ,<argpnt,#ranlst>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
mov r0 ,ranerr ; save for the show command
100$: clr r0 ; exit with no error set
110$: return
cm$glob = 0
command ranlst ,OFF ,3 ,sra$of
command ranlst ,ON ,2 ,sra$on
command ranlst ,NONE ,3 ,sra$of
command ranlst
sra$of: clr r0
return
sra$on: mov sp ,r0
return
global <ranerr ,testc>
.sbttl set repeat on/off or to something (?)
set$rp::calls getcm0 ,<argpnt,#relst>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
mov r0 ,setrpt ; save for the show command
100$: clr r0 ; exit with no error set
110$: return
cm$glob = 0
command relst ,OFF ,3 ,rep$of
command relst ,ON ,2 ,rep$on
command relst
rep$of: clr r0
return
rep$on: mov #-1 ,r0
return
global <setrpt>
.sbttl set local terminal type
set$tt::calls getcm0 ,<argpnt,#ttlst>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
mov r0 ,vttype ; save for the show command
100$: clr r0 ; exit with no error set
110$: return
cm$glob = 0
command ttlst ,TTY ,3 ,svt$tt
command ttlst ,VT100 ,3 ,svt$vt
command ttlst ,VT101 ,3 ,svt$vt
command ttlst ,VT102 ,3 ,svt$vt
command ttlst ,VT200 ,3 ,svt$22
command ttlst ,VT220 ,3 ,svt$22
command ttlst
svt$tt: clr r0
return
svt$vt: mov #vt100 ,r0
return
svt$22: mov #vt200 ,r0
return
global <vttype>
.sbttl set various things for the console terminal
set$co::calls getcm0 ,<argpnt,#colst>; find out which option was given
tst r0 ; did we find one
bmi 110$ ; no
jsr pc ,@r1 ; dispatch now
100$: clr r0 ; exit with no error set
110$: return
cm$glob = 0
command colst ,8-BIT ,1 ,sco$8
command colst ,7-BIT ,1 ,sco$7
command colst ,8BIT ,1 ,sco$8
command colst ,7BIT ,1 ,sco$7
command colst ,8_BIT ,1 ,sco$8
command colst ,7_BIT ,1 ,sco$7
command colst ,PASSALL,3 ,sco$8
command colst
sco$7: clr con8bit
return
sco$8: mov sp ,con8bit
return
global <con8bit>
numout: save <r0,r1,r2> ; /43/ Better formatting
mov 2+<3*2>(sp),r1 ; /43/ Get value please
mov r1 ,-(sp) ; /43/ Stuff it in
clr -(sp) ; /43/ Double conversion
mov sp ,r1 ; /43/ Address of word to convert
sub #20 ,sp ; /43/ A buffer to use
mov sp ,r0 ; /43/ A pointer to it
clr r2 ; /43/ Leading zero/space suppress
call $cddmg ; /43/ Convert
clrb @r0 ; /43/ .Asciz
mov sp ,r1 ; /43/ Reset pointer
print r1 ; /43/ Dump please
add #20+4 ,sp ; /43/ Pop Junk
unsave <r2,r1,r0> ; /43/ Pop registers
mov (sp)+ ,(sp) ; /43/ Move return address up
return ; /43/ Exit
.end