one>,cr return sho$ve::message sub #40 ,sp ; allocate a buffer mov sp ,r1 ; point to it movb #release,(r1)+ ; is this test or for real deccvt #baselev,r1 ; convert baseline level to ascii add #6 ,r1 ; skip past it movb #'. ,(r1)+ ; a dot deccvt #edit ,r1 ; the edit number now mov sp ,r1 ; point back to the buffer calls cvt$$ , ; drop all the extra spaces out print r1,r0 ; simple print #lasted message ; a crlf add #40 ,sp return .dsabl lsb global .sbttl show filetype and show block-check .enabl lsb sho$fi: cmpb $image ,#text ; text files bne 10$ ; not text message ,cr br 20$ 10$: cmpb $image ,#binary ; binary ? bne 20$ ; really ? message ,cr 20$: tst filprot beq 25$ message ,cr 25$: return sho$bl: movb setrec+p.chkt,r0 ; get the checksum type please bne 30$ ; it's been set already movb #defchk ,r0 ; no, set the default checktype in 30$: sub #'1 ,r0 ; convert to an index for printing asl r0 ; times 2 for word addressing print 100$(r0) ; and say so return .save .psect $Pdata,d 100$: .word 110$,120$,130$ 110$: .asciz /1-Character-Checksum/ 120$: .asciz /2-Character-Checksum/ 130$: .asciz /3-Character-CRC-CCITT/ .even .restore .dsabl lsb .sbttl show parameters and show escape .enabl lsb sho$es::mov conesc ,r1 bne 10$ mov #con$es ,r1 10$: add #100 ,r1 ; echo it back out mov r1 ,-(sp) ; allocate a buffer mov sp ,r1 ; point to it message print r1 ,#1 ; simple message tst (sp)+ ; pop buffer and exit return ; bye sho$pa: message movb conpar+p.eol,r0 octout r0 message < (octal)>,cr message movb conpar+p.spsiz,r0 decout r0 message message movb conpar+p.time,r0 decout r0 message message decout maxtry ; retry count message return global .dsabl lsb .sbttl show packet statistics .enabl lsb c$stat:: sho$pk: sub #120 ,sp ; /43/ Allocate a buffer please print #300$ ; /43/ A header clr r3 ; /43/ Current item to Dump mov #27. ,r4 ; /43/ Number items to dump 10$: mov sp ,r5 ; /43/ And a pointer to it tst pcnt.r+2(r3) ; /43/ Anything there to dump? bne 15$ ; /43/ Yes tst pcnt.s+2(r3) ; /43/ No, what about SENT packets? beq 90$ ; /43/ No, skip the whole thing 15$: mov r5 ,r1 ; /43/ Fill the buffer with spaces mov #110 ,r2 ; /43/ Count for the fill 20$: movb #40 ,(r1)+ ; /43/ Stuff a space sob r2 ,20$ ; /43/ And go back for more mov r3 ,r1 ; /43/ Current TYPE beq 30$ ; /43/ So skip TYPE field asr r1 ; /43/ Divide by two asr r1 ; /43/ Again add #100 ,r1 ; /43/ Get the letter type now movb r1 ,(r5)+ ; /43/ Insert into the buffer br 40$ ; /43/ Insert data now 30$: tstb (r5)+ ; /43/ First entry is NULL 40$: add #5 ,r5 ; /43/ Skip over a couple spaces mov #pcnt.s ,r1 ; /43/ SENT packet count call 200$ ; /43/ Convert double quantity mov #pcnt.r ,r1 ; /43/ RECEIVED packet count call 200$ ; /43/ Convert double quantity mov totp.s ,r1 ; /43/ Total SENT packet count call 200$ ; /43/ Convert double quantity mov totp.r ,r1 ; /43/ Total RECEIVED packet count call 200$ ; /43/ Convert double quantity movb #CR ,(r0)+ ; /43/ Insert carriage control movb #LF ,(r0)+ ; /43/ Insert carriage control clrb @r0 ; /43/ All done, .asciz mov sp ,r0 ; /43/ Now DUMP it print r0 ; /43/ Simple 90$: add #4 ,r3 ; /43/ Move up to next entry sob r4 ,10$ ; /43/ More to do ? ; /43/ No, dump character counts print #310$ ; /43/ A header message ; /43/ mov sp ,r4 ; /43/ Buffer address mov #charout,r1 ; /43/ Data characterK11SHOMAC[.050032]K11SHO.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|bddfe <8 bit mode>,cr 40$: clr r0 return sho$at: message tst sendat bne 50$ message ,cr br 60$ 50$: message ,cr 60$: return .dsabl lsb sho$so: message mov recsop ,-(sp) add #100 ,@sp mov sp ,r0 print r0 message message mov sensop ,@sp add #100 ,@sp mov sp ,r0 print r0 tst (sp)+ message return .sbttl show binary filetype list .enabl lsb sho$bt: message mov bintyp ,r1 tstb @r1 ; is there anything there at all bne 10$ ; yes message ,cr ; no br 100$ ; exit 10$: mov bintyp ,r1 ; get the address of the list 20$: mov #5 ,r2 ; the list is simply a concatenated message ; string of filetypes rather than 30$: tstb @r1 ; the more general one of a list beq 40$ ; of pointers. message < *> ; format it into *.xyz print r1 ,#4 ; dump current one add #4 ,r1 ; next sob r2 ,30$ ; and print the next one br 20$ ; insert a newline 40$: message ; insert a 100$: return ; and exit .dsabl lsb .enabl lsb sho$ph: message ,cr message mov #pnhead ,r2 tst (r2) ; /48/ Anything there? bne 10$ ; /48/ Yes message ,cr ; /48/ No br 20$ ; /48/ Exit 10$: mov (r2) ,r2 ; /48/ Get pointer to next beq 20$ ; /48/ Nothing mov r2 ,r3 ; /48/ Copy pointer add #2 ,r3 ; /48/ Point to the text print r3 ; /48/ Dump message ; /48/ CR/LF br 10$ ; /48/ Next please 20$: message ; /48/ Done with phone numbers 100$: return .dsabl lsb global ; /48/ Listhead for phone numbers .sbttl show RELEASE_NOTES .enabl lsb sho$rl::print #200$ print #210$ print #220$ return .save .psect $pdata ,d 200$: .byte CR,LF .ascii / A problem was discovered with attribute packet processing/ .ascii /in versions of Kermit-11 prior to 3.49. This implies that/ .ascii /versions 3.49 or later of Kermit-11 will not be completely/ .asciz /compatable with older versions. The best workaround until a/ 210$: .ascii /copy of version 3.49 or later can be obtained is to disable/ .ascii /attribute packet processing with the SET NOATTRIBUTE/ .ascii /command, and manually use the SET FILE TYPE FIXED (or SET/ .asciz /FILE BINARY) command on both Kermit-11's in order to/ 220$: .ascii /transfer binary files (such as task images). For further/ .ascii /information please see K11.BWR and K11INS.DOC / .byte CR,LF,0 .even .restore .dsabl lsb .sbttl the copy command .enabl lsb c$copy::$name call gettwo ; insure the 'to:' argument is here tst r0 ; did it work out ok ? bne 100$ ; we really could have done this in mov argbuf ,r2 ; the command macro. calls copy , ; do the rename now tst r0 ; did it work ? bne 40$ ; yes decout r1 ; print the block count print #210$ ; and a header print r2 ; and the file copied to print #200$ ; a cr/lf br 100$ ; bye 40$: direrr r0 ; no, print the error message 100$: return .save .psect $Pdata,d 200$: .byte cr,lf,0 210$: .asciz / blocks copied / .even .restore .dsabl lsb global .sbttl the rename command c$rena::$name call gettwo ; insure a 'to:' argument is here tst r0 ; did it work out ok? bne 100$ ; no mov argbuf ,r2 ; point to the arguement buffer calls rename , ; do the rename now tst r0 ; did it work ? beq 100$ ; yes direrr r0 ; no, print the error message 100$: return global c$del:: $name calls delete , direrr r0 return global .sbttl get/and or read second command argument .enabl lsb ; input: argbuf command args ; output: cmdbuf first arg ; K11SHOMAC[.050032]K11SHO.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 argbuf second arg ; r0 error code from read if done, else zero gettwo::save ; save temps please mov argbuf ,r2 ; point to the arguement buffer tstb @r2 ; anything there (should be) ? beq 100$ ; no dec r2 10$: inc r2 ; next byte tstb @r2 ; We have to finish parsing this beq 20$ ; end of it, prompt for 'To:' cmpb @r2 ,#40 ; find a space yet ? bne 10$ ; no clrb (r2)+ ; yes, make it .asciz copyz argbuf ,cmdbuf ; save the first part of the arg br 30$ ; got old and new so we are all set 20$: mov argbuf ,r2 ; point to the 'to:' part to read copyz r2 ,cmdbuf ; save the from part print #200$ ; and read the rest of it calls echo ,<#0> ; ensure terminal can echo calls kbread , ; do it tst r0 ; did it work ? bne 100$ ; no calls cvt$$ , ; yes, remove all junk tst r0 ; anything left ? beq 20$ ; no add r2 ,r0 ; yes, make it .asciz clrb @r0 ; simple 30$: copyz r2 ,argbuf ; return arg number two in argbuf clr r0 ; no errors please 100$: unsave ; pop temps and exit return .save .psect $Pdata,D 200$: .asciz /To: / .even .restore .dsabl lsb .end