-
Notifications
You must be signed in to change notification settings - Fork 0
/
k11gld.xrf
726 lines (648 loc) · 22.3 KB
/
k11gld.xrf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
>>>>> DB1:K11COM.MAC[2,2] <<<<<
loacmd::mov #cmdlst ,r0
loarem::mov #remlst ,r0
loaset::mov #setcmd ,r0
>>>>> DB1:K11CON.MAC[2,2] <<<<<
doconn::tstb ttname ; insure that a device name is set
dorsx:: return
>>>>> DB1:K11CPY.MAC[2,2] <<<<<
copy:: save <r2,r3,r4> ; save r2-r4 please
>>>>> DB1:K11DER.MAC[2,2] <<<<<
direrr::
fcsdir::mov r1 ,-(sp) ; save R1
>>>>> DB1:K11DFH.MAC[2,2] <<<<<
defhlp::message
>>>>> DB1:K11ERR.MAC[2,2] <<<<<
rmserr::cmp @2(r5) ,#-624.
rmserp::mov r1 ,-(sp) ;save fab addr
rmserx::mov #77-5 ,r1 ; maxlength of 77 (8) bytes
>>>>> DB1:K11ER1.MAC[2,2] <<<<<
rmser1::save <r0,r1,r2> ; be nice to our caller
>>>>> DB1:K11ER2.MAC[2,2] <<<<<
rmser2::save <r0,r1,r2> ; be nice to our caller
>>>>> DB1:K11ER3.MAC[2,2] <<<<<
rmser3::save <r0,r1,r2> ; be nice to our caller
>>>>> DB1:K11E80.MAC[2,2] <<<<<
xinit:: calls l$fss ,<#200$> ; open terminal on LUN.AS
ttyini::call getprv ; will need for binary open
ttyfin::calls clrdlm ,<2(r5)> ; clear private delimiters
gttnam::save <r0,r1,r2> ; may as well save it
setdlm::mov #xrb ,r0 ; setup to set a private delim
clrdlm::
ttrini::mov #xrb ,r0 ; setup to set a private delim
ttrfin::calls clrdlm ,<#lun.tt>
noecho::save <r1> ; save a temp register
echo:: save <r1> ; save a temp register
write:: mov #xrb ,r0 ; address of xrb parameter block
read:: mov #xrb ,r0 ; address of xrb parameter block
kbread::calls read ,<@r5,#80.,#0,#0> ; do the actual read now
xbinre::
binrea::mov #xrb ,r0 ; address of xrb parameter block
chkabo::calls binrea ,<#5,#-1> ; simple read on console terminal
binwri::mov #xrb ,r0 ; address of xrb parameter block
l$fss:: clrfqb
l$fssx::mov @r5 ,r0 ; get the filename address
l$ttyo::save <r0,r1> ; save temps here please
sttyou::mov r5 ,-(sp)
l$pcrl::.print #100$
$clrxr::save <r0>
$clrfq::save <r0>
exit:: clrxrb ; ensure xrb is clear first
logout::clrfqb ; ensure firqb is cleared out
quochk::clrfqb ; try to see if the logout will work
dskuse::save <r0,r1>
cantyp::save <r1,r2> ; use r0 to point into xrb
getuic::mov #xrb ,r0 ; clear xrb out first
drpprv::mov #jfsys ,xrb+0 ; drop temp privs
getprv::mov #jfsys ,xrb+0 ; get temp privs back please
suspen::mov @r5 ,xrb+0
fcserr::
fiperr::save <r0,r1,r2>
syserp::save <r0>
syserr::save <r1> ; save a register
ttypar::call ttpars ; get the terminal unit number
chkpar::clr r0
ttyhan::call ttpars ; the usual, parse the device name
ttydtr::call ttpars ; the usual, parse the device name
ttspee::save <r1>
setspd::save <r1,r2>
ttysav::save <r1,r2> ; save registers please
ttyrst::save <r1,r2> ; save registers please
ttyset::save <r1>
ttpars::save <r1>
assdev::call ttpars
namcvt::save <r1,r2>
ascdat::save <r0,r1>
asctim::save <r0,r1>
dodir:: save <r1,r2,r3,r4>
ttxon:: save <r1> ; save a temp register
sp.dev::.word 0
sp.mod::.word 0 ; use 4!40 for delete and noheader
qspool::save <r1>
detach::clrfqb ; insure no defaults
setcc:: mov #ttast ,@#24
setsla::clr r0
fu$def::.word 177777 ; do we need a defdir for RMS11v2
>>>>> DB1:K11HLP.MAC[2,2] <<<<<
c$help::call hlpopn ; open the help file up?
hnames::.word 10$,20$,30$,40$,0
>>>>> DB1:K11LCL.MAC[2,2] <<<<<
okuser::mov 2(sp) ,r0
...uic::.word 0 ; no checks on group number
..$bye::.ascii <000>/BYE/ ; BYE
..$com::.ascii <000>/COM/ ; COMMENT
..$con::.ascii <000>/CON/ ; CONNECT
..$cop::.ascii <000>/COP/ ; COPY
..$del::.ascii <000>/DEL/ ; DELETE
..$dir::.ascii <000>/DIR/ ; DIRECT
..$dis::.ascii <000>/DIS/ ; DISCONNECT
..$era::.ascii <000>/ERA/ ; ERASE
..$exi::.ascii <000>/EXI/ ; EXIT
..$fin::.ascii <000>/FIN/ ; FINISH
..$get::.ascii <000>/GET/ ; GET
..$han::.ascii <000>/HAN/ ; HANGUP
..$hel::.ascii <000>/HEL/ ; HELP
..$loc::.ascii <000>/LOC/ ; LOCAL
..$log::.ascii <000>/LOG/ ; LOGOUT
..$not::.ascii <000>/NOT/ ; NOTE
..$qui::.ascii <000>/QUI/ ; QUIT
..$rec::.ascii <000>/REC/ ; RECEIVE
..$rem::.ascii <000>/REM/ ; REMOTE
..$ren::.ascii <000>/REN/ ; RENAME
..$sen::.ascii <000>/SEN/ ; SEND
..$ser::.ascii <000>/SER/ ; SERVER
..$set::.ascii <000>/SET/ ; SET
..$sho::.ascii <000>/SHO/ ; SHOW
..$spa::.ascii <000>/SPA/ ; SPACE
..$sys::.ascii <000>/SYS/ ; SYSTEM
..$tak::.ascii <000>/TAK/ ; TAKE
..$tra::.ascii <000>/TRA/ ; TRANSMIT
..$typ::.ascii <000>/TYP/ ; TYPE
..$who::.ascii <000>/WHO/ ; WHO
slowgr::.word 2 ; cutoff for group numbers
slowdo::.word 0 ; if <> 0, then slow xfers down
slowbd::.word 1200.
throtl::save <r0,r1>
>>>>> DB1:K11M41.MAC[2,2] <<<<<
fu$def::.word 0 ; if rms needs the DNA filled in
xinit:: call getsys ; rsx or m+
xk$dev::.asciz /XK0:/
xk$spd::.word 9600.
setcc:: qiow$s #io.det,#lun.tt,#ef.tt,,#kbiost
ttyini::save <r1>
ttyfin:: ; no more abort handling
ttrini::
ttrfin::
ttysav::
ttyset::
ttyrst::
noecho::
echo::
gttnam::save <r1,r2,r3> ; save temps please
kbread::
binrea::tstb handch ; doing ibm style xon handshaking BDN
binwri::
xbinre::save <r2,r3> ; save a register for a friend
chkabo::calls xbinrea ,<#lun.tt,#-1> ; simple read on console terminal
l$ttyo::
sttyou::
l$pcrl::
logout::
exit::
quochk::
dskuse::
cantyp::
ttxon:: save <r1> ; use r0 to point into xrb
getuic::
drpprv::
getprv::
suspen::
ttypar::
chkpar::clr r0
ttyhan::save <r1>
ttydtr::
ttspee::
setspd::save <r1,r2,r3,r4>
setsla::save <r1> ; save temps we may want
ttpars:: ; NEEDS TO BE GLOBAL(RBD)
assdev::tst proflg
namcvt::
ascdat::save
asctim::save
sercmd::
systat::
dodir::
runjob::
runmcr::
rsxsys::
qspool::movb #1 ,r0
;rsxspl::mov r0 ,-(sp) ; save temps
detach::qiow$s #io.det,#5,#ef.tt,,#kbiost
syserp::
syserr::
>>>>> DB1:K11PK .MAC[2,2] <<<<<
runjob::mov r5 ,-(sp) ; convert f4/bp2 call format
$runjo::clr -(sp)
$pklog::
>>>>> DB1:K11RMS.MAC[2,2] <<<<<
sydisk::.ascii /SY:/
fablst::.word 0 ,fab1 ,fab2 ,fab3 ,fab4
namlst::.word 0 ,nam1 ,nam2 ,nam3 ,nam4
namlen::.word 0 ,0 ,0 ,0 ,0
rablst::.word 0 ,rab1 ,rab2 ,rab3 ,rab4
df$rat::.word fb$cr
df$rfm::.word fb$var
open:: calls fopen ,<@r5,2(r5),4(r5),#0>
create::calls fcreate ,<@r5,2(r5),4(r5),#0>
fopen:: save <r1,r2,r3> ; save registers
fcreat::save <r1,r2,r3> ; save registers
settyp::mov fablst(r0),r1
close:: save <r1,r2,r3> ; save registers we may have
rewind::mov @r5 ,r0
binfil::save <r1,r2,r3,r4> ; save registers we may use
getsiz::mov @r5 ,r1 ; return error in r0, size in r1
getatr::save <r1,r2> ; save these please
putatr::save <r1,r2> ; save these please
getrec::mov 2(r5) ,r0 ; get the channel number
putrec::mov r1 ,-(sp)
getc:: mov @r5 ,r0
getcr0::save <r2,r3> ; save temps
putc:: save <r1> ; simply save r1 and call putcr0
putcr0::save <r1,r2,r3,r4> ; save registers we use
fu$dir::.word 0 ; style wildcarding on your non-standard
lookup::save <r1,r2,r3,r4,r5>
RNFAB1::FAB$B ; Old file name
RNNAM1::NAM$B ; NAM definition
RNFAB2::FAB$B ; New file name
RNNAM2::NAM$B ; NAM definition
rename::save <r2,r3,r4,r5> ; save temps please
delete::save <r2,r3,r4> ; save registers we may overwrite
fparse::save <r1,r2> ; save registers we may overwrite
tsksiz::sub #40 ,sp ; use the stack for a buffer
getsys::sub #40 ,sp ; use the stack for a buffer
GSABAS:: ; GSA base address
GSAMIN:: ; Minimum allocation
GSAREQ:: ; Size of this request
GSA::
getmcr::save <r1,r2> ; just for kicks, save these
>>>>> DB1:K11RTC.MAC[2,2] <<<<<
doconn::tstb ttname ; insure that a device name is set
dorsx:: return
>>>>> DB1:K11SER.MAC[2,2] <<<<<
server::mov remote ,-(sp) ; save the local/remote flag
remfin::clr paknum ; packetnumber := 0
rembye::clr paknum ; packetnumber := 0
remget::call seropn ; get the link line intialzied
remhos::call seropn ; get the link line intialzied
remspa::calls doremo ,<#'U,#1,#null>
remdir::calls doremo ,<#'D,#1,@r5>
remtyp::calls doremo ,<#'T,#1,@r5>
remwho::calls doremo ,<#'W,#1,#null>
remera::calls doremo ,<#'E,#1,@r5>
remhlp::calls doremo ,<#'H,#1,#null>
remren::calls doremo ,<#'R,#2,@r5,2(r5)>
remcop::calls doremo ,<#'K,#2,@r5,2(r5)>
>>>>> DB1:K11SHO.MAC[2,2] <<<<<
c$show::$name <SHO>
sho$dy::calls ascdat ,<#errtxt,#0>
sho$ve::message <Kermit-11 >
sho$es::mov conesc ,r1
c$copy::$name <COP>
c$rena::$name <REN>
c$del:: $name <DEL>
c$type::$name <TYP>
c$prin::calls qspool ,<#argbuf,#lun.in>
>>>>> DB1:K1180S.MAC[2,2] <<<<<
systat::br 5$ ; skip the error exit
sercmd::clr pkbufs ; insure no data is left in buffer
>>>>> DB1:K11DEB.MAC[2,2] <<<<<
texadr::
c$disp::mov #argbuf ,r0 ; locate the symbol in directory
>>>>> DB1:K11INI.MAC[2,2] <<<<<
kerini::call init0
spar:: save <r0,r1,r2> ; save registers we may use
fixchk::tstb setsen+p.chkt ; did the user ever set block-check?
sparin::save <r1> ; save registers we may use
rpar:: save <r0,r1,r2> ; save registers we may use
rparin::save <r1> ; save registers we may use
fillog::save <r0,r1>
dskdmp::save <r0,r1,r2,r5>
senhdr::mov #-1 ,pcnt.n
rechdr::mov #-1 ,pcnt.n
reclog::save <r1>
senlog::save <r1>
>>>>> DB1:K11ATR.MAC[2,2] <<<<<
w$attr::save <r2,r3,r4> ; save registers that we may use here
r$attr::save <r1,r2,r3,r4,r5> ; just to be safe
ispdp:: clr r0 ; presume failure
clratr::clr at$len
atrfin::save <r1,r2,r3> ; just in case please
>>>>> DB1:K11TRA.MAC[2,2] <<<<<
transf::clr r2 ; input_open := false
>>>>> DB1:K11ST0.MAC[2,2] <<<<<
set$li::copyz #argbuf ,#ttname,#20 ; copy the device name please
set$sp::calls l$val ,<#argbuf> ; get the speed into decimal
set$de::calls getcm0 ,<#argbuf,#dbglst>; find out which option was given
sd$off::bic #log$al ,trace ; clear all debug bits now
set$pa::calls getcm0 ,<#argbuf,#parlst>; find out which option was given
set$ha::call ttchk ; insure a line is set
set$lc::mov #lcelst ,r5
set$du::mov #duplst ,r5
set$ib::calls getcm0 ,<#argbuf,#ibmlst>; find out which option was given
>>>>> DB1:K11RTD.MAC[2,2] <<<<<
lookup::save <r1,r2,r3> ; save all the temps please
dodir:: save <r1,r2,r3,r5> ; save these please
>>>>> DB1:K11RTU.MAC[2,2] <<<<<
rename::save <r2,r3,r4> ; save these please
delete::save <r2,r3,r4> ; save these please
copy:: save <r2,r3> ; save temp registers please
ascdat::save <r0,r1,r2,r3> ; save these please
asctim::save <r0,r1,r2,r3> ; save all registers that we use
$ddiv::
>>>>> DB1:K11ST1.MAC[2,2] <<<<<
set$bl::calls getcm0 ,<#argbuf,#blklst>; find out which option was given
set$dt::call ttchk ; must have already done a SET LINE
c$disc::
c$hang::$name <HAN>
set$hu::call ttchk ; must have already done a SET LINE
set$fi::calls getcm0 ,<#argbuf,#setfil>
set$df::copyz #argbuf ,#defdir,#filsiz; setup a default directory
set$ho::clrb defdir
set$lo::call sd$off ; insure previous file is closed
set$eo::calls octval ,<#argbuf> ; get the octal value now
set$pl::calls l$val ,<#argbuf> ; set the arguement now
set$ps::calls l$val ,<#argbuf> ; get the value
set$dl::calls l$val ,<#argbuf> ; get the value
set$es::calls octval ,<#argbuf> ; get the octal value now
set$re::calls l$val ,<#argbuf> ; SET RETRY decimal number
set$ti::calls l$val ,<#argbuf> ; SET TIMEOUT decimal number
set$rf::calls getcm0 ,<#argbuf,#rfmlst>; find out which option was given
set$at::calls getcm0 ,<#argbuf,#attlst>; find out which option was given
set$pr::copyz #argbuf ,#prompt,#20.
set$se::calls l$val ,<#argbuf> ; SET SEED decimal number
set$ra::calls getcm0 ,<#argbuf,#ranlst>; find out which option was given
set$cf::calls getcm0 ,<#argbuf,#cflst>; find out which option was given
set$tt::calls getcm0 ,<#argbuf,#ttlst>; find out which option was given
>>>>> DB1:K11DAT.MAC[2,2] <<<<<
prompt::.blkb 40
kbiost::.blkw 2 ; for RSXM/M+ terminal io status
notatt::.blkw 1 ; if <>, server is running detached
vttype::.blkw 1 ; the vttypeal type
proflg::.blkw 1 ; if a pro/350 (?)
logini::.blkw 1
consts::.blkw 2 ; for the connect command for RSX
tists:: .blkw 2 ; for the connect command for RSX
mcrcmd::.blkw 1 ; if <>, then we got a mcr/ccl cmd line
binmod::.blkw 1 ; for RSTS, something is open mode 1
sy.ini::.blkw 1 ; for KERMIT.INI stuff
handch::.blkw 1 ; for ibm systems ?
duplex::.blkw 1 ; if eq, full (default), else half
sparsz::.blkw 1 ; size of our sinit packet
chksiz::.blkw 1 ; current checksum size in bytes
chktyp::.blkw 1 ; the current checksum type
maxtry::.blkw 1 ; maximum number of retries
conesc::.blkw 1 ; escape character for connection
sertim::.blkw 1 ; timeout waiting for server cmd
inserv::.blkw 1 ; currently we are a server
ranerr::.blkw 1 ; generate random checksum errors if ne
seed::
testc:: .blkw 1 ; for debugging
skipfl::.blkw 1 ; should we send a EOF DISCARD packet
parity::.blkw 1 ; save parity setting for SHOW command
logfil::.blkb 40 ; a log filename for the SHOW command
cccnt:: .blkw 1 ; number of control C's so far
doauto::.blkw 1 ; if <>, then do auto binary (default)
sendat::.blkw 1 ; if zero, NEVER send attribute packets
sendly::.blkw 1 ; wait before sending SINIT
pauset::.blkw 1 ; wait before sending a packet
oldpau::.blkw 1 ; save the old time for pausing
defdir::.blkb filsiz+2 ; default directory for send and rec
ttcnpa::
ttparm::.blkb 50 ; saved terminal settings
ttnapa::.blkb 50
outlun::.blkw 1 ; zero for TI else lun.ou
cmdlun::.blkw 1 ; current command file lun
cmdadr::.blkw 1 ; saved address of command routine
cmdnum::.blkw 1 ; index into the current command list
hlpbuf::
cmdbuf::.blkb 120 ; 80 byte buffer for reading commands
argbuf::.blkb 120 ; also for reading args for commands
hlptop::
srcnam::.blkb filsiz+2 ; original send filespec
filnam::.blkb filsiz+2 ; output from directory lookup routine
index:: .word 0 ; index into directory
recpkt::.blkb 210 ; 128 byte buffer receive packet buffer
packet::.blkb 210 ; a general packet
ttname::.blkb 20 ; our current terminal link name
ttdial::.blkb 20 ; save the remote name here
ttcons::.blkb 20 ; our console name for virtual tty
consav::.blkb 20
trace:: .blkw 1 ; for file and packet logging
debug:: .blkw 1 ; console debugging
sermod::.blkw 1 ; if we are currently a server
reccnt::.blkw 1 ; total received count
sencnt::.blkw 1 ; total sent count
totp.r::.blkw 34 ; total rec by packet type
totp.s::.blkw 34 ; total sent by packet type
pcnt.r::.blkw 34 ; packet count by type for RPACK
pcnt.s::.blkw 34 ; packet count by type for SPACK
pcnt.n::.blkw 1
atrctx::.blkw 1 ; context for attribute packets
senpar::.blkb 20 ; remotes connection parameters
conpar::
recpar::.blkb 20 ; our connection parameters
setsen::.blkb 20 ; we may override the default
setrec::.blkb 20 ; save for receive parameters
image:: .blkw 1 ; if in image mode
$image::.blkw 1 ; save image flag for autobyte
numtry::.blkw 1 ; number of retrys
oldtry::.blkw 1 ; old value of numtry
paknum::.blkw 1 ; current packet number mod 64
remote::.blkw 1 ; if <> then we are remote
state:: .blkw 1 ; current state
linkst::.blkw 1 ; if <> then a link is active
outopn::.blkw 1 ; did recsw ever create anything
inopn:: .blkw 1 ; did sendsw ever open anything
size:: .blkw 1 ; size of last call to bufferfill
xgottn::.blkw 1 ; got an xpacket in server
xmode:: .blkw 1 ; if <> then doing text output to ti:
do8bit::.blkw 1 ; if <> then doing 8 bit prefixing
snd8bi::.blkw 1
set8bi::.blkw 1 ; if <> then set bit seven on character
ebquot::.blkw 1 ; if doing 8 bit prefixing, this is it
errtxt::.blkb 102 ; a buffer for SYSERR(errnum,buffer)
rtwork::.blkw 10 ; for RT11 exec calls
conflo::.blkw 1 ; for RT11 connect flow control
rtque:: .blkw 12*12 ; allocate extra que elements for RT11
at$len::.blkw 1
at$typ::.blkw 1
at$cre::.blkw 1
at$id:: .blkw 1
at$bil::.blkw 1
at$are::.blkw 1
at$pas::.blkw 1
at$bsi::.blkw 1
at$acc::.blkw 1
at$enc::.blkw 1
at$dis::.blkw 1
at$pr0::.blkw 1
at$pr1::.blkw 1
at$sys::.blkw 2
at$for::.blkw 1
at$fab::.blkw 15
at$val::.blkw 1
stklim::.blkw 600
stack::
>>>>> DB1:K11CM1.MAC[2,2] <<<<<
c$set:: $name <SET>
c$conn::$name <CON>
c$dir:: $name <DIR>
c$who:: calls systat ,<#0>
c$tran::calls transf ,<#argbuf,#0>
c$take::$name <TAKE>
c$sys:: $name <SYS>
c$spac::$name <SPA>
>>>>> DB1:K11RTE.MAC[2,2] <<<<<
syserr::calls rmserr ,<#2,r5,2(r5)> ; simple
rmserr::save <r0,r1> ; the registers we will use
>>>>> DB1:K11SUB.MAC[2,2] <<<<<
edit$::
cvt$$:: save <r1,r2,r3,r4,r5> ; the scratch registers to use.
l$len:: mov r0 ,-(sp) ; save it for later.
l$wrdec::
l$cvti::save <r5> ; call common conversion sub.
l$cvtnum::
locmout::
mout:: save <r0>
instr::
rdtoa::
l$val:: save <r2,r3>
octval::save <r2,r3> ; save temps please
l$otoa::save <r0,r1,r2,r3> ; save the scratch regs.
l$wroc::save <r0>
copyz$::save <r0,r1> ; save registers we may use
dump$b::save <r0,r1,r2> ; save all please
>>>>> DB1:K11PAK.MAC[2,2] <<<<<
spack$::save <r1,r2,r3,r4> ; save registers that we may use
spakin::bit #log$pa ,trace ; tracing today ?
rpack$::save <r1,r2,r3,r4>
clrpar::tstb parity ; handle nothing please (no parity)
checks::save <r0,r1,r2,r3> ; save registers we may use
crcclc::save <r1,r2,r3,r4,r5> ; save registers please
clrsta::save <r0,r1,r2> ; save the registers we use
buffil::save <r2,r3,r4> ; save all registers we may use
bufpak::save <r2,r3,r4,r5> ; save all registers we may use
bufemp::save <r1,r2,r3> ; save temps as usual
bufunp::save <r2,r3,r4> ; save temps as usual
printm::save <r0,r1,r5> ; save registers we will use
error:: save <r1,r2,r3,r4,r5>
prerrp::.print #200$
m$type::save <r0> ; save temps that we will use
m$retr::save <r0> ; save r0 please
m$sync::save <r0> ; save r0 please
getnxt::save <r1>
l$xor:: save <r0>
scanch::save <r2> ; save temps
irand:: tst testc
dopari::save <r0,r1,r2,r3> ; save things we will use
>>>>> DB1:K11RT4.MAC[2,2] <<<<<
df$rfm::.word 0
df$rat::.word 0
freept::.word 0 ; for the next .fetch
cloerr::.word er$sy1 ,er$sy1 ,er$sys ,er$prv
csierr::.word er$fnm ,er$dev ,er$sy2
dsterr::.word er$dev
enterr::.word er$lby ,er$ful ,er$sy3 ,er$prv ,er$sy3
feterr::.word er$dev ,er$sy4
lokerr::.word er$lby ,er$fnf ,er$sys
reaerr::.word er$eof ,er$rer ,er$nop ,er$sys
wrierr::.word er$eof ,er$wer ,er$nop ,er$sys
twaerr::.word er$que
mrkerr::.word er$que
renerr::.word er$lby ,er$fnf ,er$iop ,er$prv
xcierr::.word er$lby ,er$xco
xcspfu::.word er$fun ,er$hrd ,er$nop ,er$sys
mterr:: .word er$nin ,er$nat ,er$lun ,er$iop ,er$bsy ,er$buf ,er$sys
xinit:: .gval #rtwork,#CONFIG ; check for what we are running on
nosj:: .asciz /Kermit-11 may not run correctly on a SJ monitor./<cr><lf>
fopen::
open:: save <r1,r2,r3> ; save all the temps please
en$siz::.word 0 ; 1/2 largest free or 2nd largeset
fcreat::
create::save <r1,r2,r3,r4> ; save all the temps please
getsiz::mov @r5 ,r1 ; get opened filesize
close:: save <r1> ; save registers we may have
rewind::mov @r5 ,r0 ; get the channel number
getrec::save <r2,r3,r4> ; save registers we may need
putrec::save <r1,r2,r3> ; save registers we may need
getc:: mov @r5 ,r0
getcr0::save <r3> ; use for saving the channel#
putc:: save <r1> ; simply save r1 and call putcr0
putcr0::save <r1,r2,r3,r4> ; save registers we use
fparse::save <r1>
l$ttyo::save <r0,r1,r2,r3> ; save registers we may need
sttyou::mov r5 ,-(sp)
l$pcrl::print #100$
getsys::mov #7 ,r0 ; this is rt11 folks
exit:: .exit ; should always work ok
suspen::save <r1> ; save temps
setcc::
getuic::
logout::
quochk::
qspool::
noecho::
echo::
runjob::clr r0
getprv::
drpprv::
throtl::return
getatr::mov #er$iop ,r0
putatr::clr r0
binfil::clr r0
chkpar::clr r0
systat::
sercmd::mov #er$iop ,r0
okuser::mov (sp)+ ,@sp
dskuse::mov @r5 ,r0
getmcr::mov @r5 ,r0
detach::mov #er$iop ,r0
fetch:: .dstat #rtwork,r5
$mul:: mov r0 ,-(sp)
$div:: mov r0 ,-(sp)
$ash:: tst 2(sp) ; left shift or rigth shift?
>>>>> DB1:K11PRT.MAC[2,2] <<<<<
ttysav::
ttyrst::
deadev::
assdev::
ttyini::save <r1,r2> ; always save temps please
ttyfin::save <r1> ; save temps please
contrp::clr ttctlc
conrst::.scca #rtwork ,#0
xbinre::
binrea::save <r2,r3,r4> ; we may want to use these here
binwri::save <r1,r2,r3,r4>
cantyp::save <r1,r2> ; save temps
ttxon:: call clrxc ; get the driver to clear xoff status
ttpars::clr r0 ; always unit zero for PRO/RT
gttnam::mov @r5 ,r0 ; for PRO/RT, always return TT:
setspd::mov #377 ,r0
chkabo::bis #40000!10000!100,@#JSW ; enable special input modes
ttspee::
ttyset::
ttrfin::
ttrini::clr r0
ttydtr::
ttyhan::mov #er$iop ,r0
kbread::mov r2 ,-(sp)
>>>>> DB1:K11CVT.MAC[2,2] <<<<<
namcvt::save <r1,r2,r3,r4> ; save these in case we use them
chkext::save <r1,r2,r3,r4> ; save scratch registers we will use
>>>>> DB1:K11CMD.MAC[2,2] <<<<<
kermit::calls setcc ,<#cctrap> ; enable control C trapping ?
c$rec:: $name <REC>
c$send::$name <SEN>
c$serv::$name <SER> ; allow patching this out (why??)
opentt::tst linksts ; already open ?
clostt::save <r0>
c$exit::call sd$off
c$nop:: return ; a NO-OP command ???
rm$bye::
c$bye:: $name <BYE>
rm$fin::
c$fin:: $name <FIN>
rm$get::
c$get:: $name <GET>
rm$spa::$name <SPA>
rm$hlp::$name <HEL>
rm$hos::$name <HOS>
rm$dir::$name <DIR>
rm$typ::$name <TYP>
rm$who::$name <WHO>
rm$del::$name <DEL>
rm$ren::$name <REN> ; do a remote rename please
rm$cop::$name <COP> ; do a remote Kopy please
tkecho::.word -1 ; if <> then echo the take file
c$loc:: $name <LOC>
c$rem:: $name <REM>
c$test::return
getcmd::clrb argbuf
getcm0::save <r2,r3,r4>
cctrap::cmp cccnt ,#cc$max
direr$::mov r0 ,-(sp) ; direrr will select whether or not
gettwo::save <r1,r2> ; save temps please
>>>>> DB1:K11SEN.MAC[2,2] <<<<<
sen.sw::
sendsw::movb @r5 ,state ; do a SINIT first thing please
sinfo:: save ; save ALL registers please
sinit:: movb #'S&137 ,-(sp) ; normal sinit operation for sending
>>>>> DB1:K11REC.MAC[2,2] <<<<<
recsw:: clr paknum ; packet_number := 0
rec.sw::movb @r5 ,state ; assume RECEIVE-INIT for starters
>>>>> DB1:K11RTT.MAC[2,2] <<<<<
assdev::save <r1> ; we may want to use these
ttyini::save <r1,r2> ; we will need this one
contrp::.scca #rtwork ,#ttctlc
conrst::.scca #rtwork ,#0
ttysav::save <r1> ; we will use this one
ttyrst::save <r1,r2> ; we will use this one
xbinre::
binrea::save <r2,r3,r4> ; we may want to use these here
binwri::save <r1,r2,r3,r4,r5> ; save registers we may need
ttpars::mov r1 ,-(sp) ; save scratch register please
gttnam::save <r1,r2,r3> ; save registers please
ttyfin::call ttpars ; finish up mt service
setspd::save <r1,r2,r3> ; save temps that we will use
ttspee::save <r1,r2,r3> ; save these please
spdlst::.word 50. ,75. ,110. ,134. ,150. ,300. ,600.
spdmap::.word 0 ,400 ,1000 ,1400 ,2000 ,2400 ,3000
ttxon::
cantyp::
ttyset::
ttydtr::
ttrfin::
ttrini::clr r0
ttyhan::mov #er$iop ,r0
kbread::mov r2 ,-(sp)
chkabo::bis #40000!10000!100,@#JSW ; enable special input modes