; 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 ,cr message ,cr message ,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$bin command setfil ,8-BIT ,1 ,sf$bin 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$bin command setfil ,SEVEN_BIT ,2 ,sf$asc command setfil ,EIGHT-BIT ,2 ,sf$bin 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 .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 , ; /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 ; End /54/ edits .sbttl set BINARY-TYPE .ext .enabl lsb set$bi::save ; 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 ,cr message ,cr br 90$ ; error exit 20$: tst binset ; have we been here before bne 30$ ; yes message ,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 ; 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>; tK11ST1MAC[.050032]K11ST1.MAC[.050032]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddf return ; /53/ Exit sts$nx: clr prexon ; /53/ Don't prefix with XON clr r0 ; /53/ Success return ; /53/ Exit GLOBAL ; /53/ Defined in K11DAT set$eo::calls octval , ; 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 , ; get the value tst r0 ; well ? bne 100$ ; no, bad value mov r1 ,pauset ; ok 100$: return set$dl::calls l$val , ; get the value tst r0 ; well ? bne 100$ ; no, bad value mov r1 ,sendly ; ok 100$: return global .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 ; /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 , ; /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 ,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 ,cr decout r0 ; /43/ message < bytes. This may cause the line/port driver to loose>,cr message ,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 , ; 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 ,cr 120$: sec return .save .psect $PDATA,d ps$max: .asciz /MAX/ .even .restore .dsabl lsb .sbttl set escape whatever and set retry .enabl lsb set$es::calls octval , ; 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 ,cr br 20$ ; exit 10$: mov r1 ,conesc ; store it 20$: return set$re::calls l$val , ; SET RETRY decimal number tst r0 ; well ? bne 100$ ; no, bad value cmp r1 ,#3 ; a reasonable minK11ST1MAC[.050032]K11ST1.MAC[.050032]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddfrfmlst ,STREAM ,3 ,srf$st command rfmlst ,VARIABLE,3 ,srf$va command rfmlst .sbttl enable or disable attribute packet transmission set$at::calls getcm0 ,; 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 ,; /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 set$pr::copyz argpnt ,#prompt,#20. clr r0 return global .sbttl error debugging set$se::calls l$val , ; SET SEED decimal number tst r0 ; well ? bne 100$ ; no, bad value mov r1 ,testc ; save it 100$: return set$ra::calls getcm0 ,; 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 .sbttl set repeat on/off or to something (?) set$rp::calls getcm0 ,; 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 .sbttl set local terminal type set$tt::calls getcm0 ,; 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 .sbttl set various things for the console terminal set$co::calls getcm0 ,; 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 numout: save ; /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 ; /43/ Pop registers mov (sp)+ ,(sp) ; /43/ Move return address up return ; /43/ Exit .end K11ST1MAC[.050032]K11ST1.MAC[.050032]4   X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>