-
Notifications
You must be signed in to change notification settings - Fork 0
/
cpcp-patchit-email.txt
1550 lines (1534 loc) · 56.6 KB
/
cpcp-patchit-email.txt
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
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
In response to my query about non-boot patches, patches that get applied after the sysem is up. Following Keith's response
is a copy of the patchit patches on system cpcp.tap.
I don't know how this feature worked. Assemble this and run it after boot?
****************************************************************************************
From Keith Calkins, 7/22/22
There should also be a PATCHCI file which would be compressed input which these SI updates modify in typical CP-V update style. You can
copy that via C PATCHCI(C) to LP(K) (I always like line numbers on my list listings, especially if "updates" are being applied! I see
you were able to use ME for TY which I found interesting. I would not have guessed that would work!)
There should be 6 words, 3 double words, 1 double word of 64 bits for each COC at that hardwire location.
We want to avoid SYSTEM A style COC since that had a non-standard COC (GSP COC) which used RDs for output... instead of I/O
writes---it had no MIOP interface.
Any luck with the esc Q??? That would verify if it is a COC issue or a LOGON/ON 0/etc issue. Are our COC interrupts working?
60/61 would be for the first COC, but if you are on the second it would be 62/63 and if you are on the second COC and don't have
those interrupts enabled/implemented... You can check if they are active by looking at the XPSD target location to see if
something has been saved... I'm thinking MEA05 was COC#0 and MEA06 was COC#1 (using the formal 0 indexing instead of informal
1 indexing).
Are characters getting in...there is a COC ring buffer where data is supposed to come in one character at a time as halfwords,
one byte is the character, the other byte the line number, one separate ring buffer for each COC. I don't remember right off
which is the "first" byte of the halfword, character/line number, but that would be documented in the COC manual. I put "first"
in quotes since I was rather upset to see simh try to define Sigma instruction format using non-Sigma bit numbering
(big vs little Endian)---almost generated some updates to correct that---that is just wrong/confusing to do!
***************************************************************************************
PCL HERE
<COPY PATCHCI(C) TO ME
CPCO SET 0 A/B CPCN + 5.2MB,NO CP 04/91=>
CPCP SET 1 A/B CPCO +3RD PUB,- 1.2MB 10/91=>
* KEEP LINE NUMBERS (IOCOUNT)
ASECT
DO1 CPCO
LOC X'27D2'+578 MPATCH+578
DO1 CPCP
LOC X'28DE'+578 MPACH+578
PATCHLOC EQU $
* **********************************
HANDLERS EQU X'8E00' THESE MUST BE SET BY HAND
SPECHK EQU X'8EDC' AS THEY ARE IN UMOV
*
A SET X'A' SIGMA 9 SINCE 12/85
B SET X'B' SIGMA 9 SINCE 12/84
C SET X'C' SIGMA 9 SINCE 05/86
*
SYSTEM SET A "ACADEMIC"
*SYSTEM SET B "ADMINISTRATIVE" AND EXTERNAL
*SYSTEM SET C MAINTENANCE AND DEVELOPMENT
* SEE BELOW NSCOC/COMSYS
*
POTAPE SET 0 SET TO 1 FOR PO TAPE VERSION
AUTOBAUD SET 0 EXCLUDE OBS AUTOBAUD MODEM CODE
* INCLUDES NSCOC BUT SETS COC TYPE
DO1 POTAPE
SYSTEM SET A
NSCOC SET 0 INCLUDE GSP COC SUPPORT
DO1 SYSTEM=A
NSCOC SET 1 DO ONLY IF ON SYSTEM A
*
COMSYS SET 3 3 FOR SYSTEM AC/AB
DO1 SYSTEM=B
COMSYS SET 2 2 FOR SYSTEM AB - HIGHER INTERRUPTS
PAGE
CSECT 0
SYSTEM SIG7
SYSTEM BPM
SYSTEM UTS FOR LOAD/STORE
STARTPATCH CNAME
PROC
HERE SET $
ADDRESS CSECT 0
DATA 0
DMASKS CSECT 0
DATA 0
USECT HERE
MASKFLG SET 0
MASKCOUNT SET 0
PEND
PATCHAT CNAME
PROC
DELTA SET $-HERE
HERE SET $
LAST SET AF
DO DELTA
MASKCOUNT SET MASKCOUNT+1
USECT ADDRESS
DATA LAST(1)
USECT DMASKS
DO1 NUM(AF)=1
DATA -1
DO NUM(AF)~=1
DATA AF(2)
DO1 AF(2)~=-1
MASKFLG SET 1
FIN
LAST(1) SET LAST(1)+1
FIN
USECT HERE
PEND
PAGE
REF F:BD
*
REF WRTF,RDF,TIME,T:RCE,JX:CMAP,JBUPVP,CBB5,CLRBBUF
REF CPOS,MODE4,MODE2,MODE4INIT,MXFPL,MODE3
REF TTYOUT,SSTD,SSTDLC,SAPL,SAPLLC
REF MPATCH,MODE,MODE5,COD:HWL
REF SL:BPRIO,SL:RATOR,SL:AIRM,SL:RAMR,SH:RBSUM
REF MM,NEWQ,MSG3
REF SL:ETS,SL:EPS
REF YFFFF,DISCCU,Y08,Y04,Y02
REF DCTSIZ,DCT1,DCT2,DCT3,DCT4,DCT5,DCT8,DCT9
REF DCT12,DCT16,DCT17,DCT18
REF IOSCU,S:OUIS,S:OUAIS
REF M3,M8,M6,MASKS,TABLES
REF XF,M7
REF IOQ,IOQ5,IOQ7,IOQ8,IOQ10
REF COCOEL,COCIPL,COCIPC,COCOP,CO:OUTRS
REF COC,COCTERM,COCITV,COCOTV,COCBUF,COCOC
REF UH:FLG,PLB:USR,SCHED,C:IDLE,S:CLOCK4
REF MX:PPUT,U:MISC,UB:PRIO
REF LB:UN,LNOL,EOMTIME
REF CH:DRT,DRTHEN,PM,SB:RQ
REF S:FPPC,UB:PCT,UX:JIT,SB:SET:
REF COD:LPC,CO:RCVON,CO:XDATA
REF SAVCBD,SC1900
REF RE:ENT,FILCFU
REF RA,SYSVERS
REF CSEHAND:,CSE$9:9
REF T:GJOBSTRT,CO:AIL,UB:ACP,HGP
REF PFSR:
DO1 0 CPCM RAD STUFF
REF M:FREE#GRAN,M:SWAPD
REF AVRTBLSIZ,ANSFLGS
REF PRTCU,PRTOUT
REF TB:MAX,TB:SZ,TB:FLGS,OB:BTX,OB:OTX,OB:GTX
REF SH:LNM,SB:LTY,STB:TYP,SYMX,SNDDX
REF SWAPIN,S:FPPH,JPPH,S:ISUN,UH:AJIT,JAJITVP,FPMC
REF CO:RCVDOFF,COCOR,E:CUB,SL:UB,STOB,STOBO,UB:US
REF WRTD,COOP,J:BASE,SCDEVTYP XP STUFF
REF KBTCU,Y4,POWROFF,ERRLOG
REF :BIG
REF SB:ROMX,SB:RODF,T:INITJOB,SB:SWP:
REF NSPT,GRAN
REF DISKAB
REF IORT
* SYSTEM DEPENDANT
* REF NB31TO0,TSTACK,X10,X80,X20
*MAGTAPE EQU X'92C8' ** SYSGEN DEPENDENT TSIO
*MAGTAPE EQU X'9400' ** SYSGEN DEPENDENT DPSIO+CRDOCU
MAGTAPE EQU X'93AA' ** SYSGEN DEPENDENT DPSIO,-CP
*MTAP EQU X'907E' ** SYSGEN DEPENDENT
*MTAP EQU X'909E' ** SYSGEN DEPENDENT CRDOCU
MTAP EQU X'9048' ** SYSGEN DEPENDENT DPSIO,-CP
COMLIST EQU KBTCU+X'97'
EXITIS EQU MAGTAPE+X'8B'
EXITFOL EQU MAGTAPE+X'83'
REF UMOVPTCH
PAGE
LIST,1 1
START M:OPEN F:BD,(FILE,'MODE4INIT',':SYS'),(IN),;
(ERR,BDERR),(ABN,BDERR)
M:READ F:BD,(BUF,L00#03),(SIZE,156),;
(BTD,0),(WAIT)
M:READ F:BD,(BUF,CODHWL),(SIZE,024),;
(BTD,0),(WAIT)
M:CLOSE F:BD,(SAVE)
BDERR M:SYS
BCR,8 MONOK
M:TYPE (MESS,NOPRIV)
M:EXIT
NOPRIV TEXTC 'INSUFFICIENT PRIVILEGE'
MONOK CI,10 NEWQ
BE GOODMON
M:PRINT (MESS,BADMON)
M:XXX
BADMON TEXTC 'PROGRAM LOADED WITH WRONG MONITOR'
GOODMON EQU,0 $
LI,3 LASTPTCH
CI,3 MX:PPUT+7+:BIG+:BIG+:BIG+:BIG+:BIG+:BIG+:BIG+:BIG
BL SIZOK
M:PRINT (MESS,TOOMNY)
M:XXX
TOOMNY TEXTC 'TOO MANY PATCHES FOR AVAILABLE PATCH SPACE'
WTOPN DATA X'6D000027' ENABLE
M:WAIT 0
SIZOK EQU,0 $
LH,1 X'2B' GET SYSTEM DESIGNATION
AND,1 =X'F' => A,B,C
CI,1 SYSTEM
DO POTAPE=0
BE SYSOK
M:PRINT (MESS,WRNGSYS)
M:XXX
WRNGSYS TEXTC 'PATCHIT RUNNING ON WRONG SYSTEM'
FIN
SYSOK EQU,0 $
LI,10 -1
LI,11 -1
LI,12 -1
LI,13 -1
LI,14 -1
LI,15 -1
LCI 6
STM,10 X'1A'
CAL1,6 #GJOB0 9DIAG
CAL1,6 #GJOB1 LMMON
LI,1 15 ** SYSGEN DEPENDANT (PAGES TO MAP)
LI,2 X'8000' FIRST REAL PAGE TO MAP
LI,3 X'18000' WHERE TO PUT IT
M:FVP *3 FREE THE PAGE
M:CVM *2,*3 PUT IT IN THE MAP HERE
AI,2 X'200'
AI,3 X'200' GET THE NEXT PAGE
BDR,1 $-4 GET ALL SEVEN PAGES
LI,5 MASKCOUNT
CI,5 BITCOUNT
BNE ERROR
LI,3 PATCHCOUNT
DATA X'6D000037' DISABLE
LI,2 2
LB,2 SB:RQ,2 WAIT TIL NO OPEN CLOSE USERS
BNE WTOPN
LW,2 PATCHES,3
STW,2 PATCH$-1,3
BDR,3 $-2
*
LI,5 MASKCOUNT
LDNXTP LW,3 DMASKS,5
LW,2 PBITS,5
LW,6 ADDRESS,5
CI,6 X'8000'
BL $+2 => NO NOT IN UMOV
AI,6 X'10000' YES PATCH UMOV OR SUSPTERM+
STS,2 *6
BDR,5 LDNXTP GO LOAD THE NEXT PATCH
*
LI,5 LNOL-1 NUMBER OF LINES
CHKLN LB,3 LB:UN,5
BNE NXTLN CHECK IF ANYBODY IS HOME
LB,3 MODE4INIT,5
BNE NXTLN WAS IT AN AUTOBAUD LINE?
LH,3 EOMTIME,5
BNE NXTLN
LB,3 MODE2,5
CI,3 X'20' SPACE INSERTION???
BNE NXTLN
OR,3 =X'80' SET LOGGING OFF
STB,3 MODE2,5
NXTLN AI,5 -1
BGE CHKLN
DATA X'6C003002' RESET COC INIT FLAG => INIT IT
DO 0 ENABLED 1/17/89 KGC (PERHAPS A LITTLE LATE)
DATA X'6C003012' THIS SEEMS APPROPRIATE-KGC 87/05/01
FIN
DO POTAPE=1&NSCOC=1
LH,1 X'2B' GET SYSTEM DESIGNATION
AND,1 =X'F' => A,B,C
CI,1 X'A' SYSTEM A
BE $+2
STW,1 COC:TYPE SET TO XEROX COC FOR SYSTEM B,C
FIN
DO 0
LI,3 X'BAD1'
MTW,0 M:FREE#GRAN+1
BG NORAD
RADLP LI,3 X'BAD2'
DATA X'4E0002F1' TDV,0 X'2F1'
STCF 4
BCS,4 NORAD
BCR,8 GORAD IF NOT SPINNING IGNORE
LI,1 1000
BDR,1 $
B RADLP
*
* WE'LL ASSUME THAT IT IS UNWRITE-PROTECTED!
*
DO SYSTEM=A
GORAD LI,1 X'520' 1/2 A RAD
ELSE
GORAD LI,1 X'A40' FULL RAD
FIN
AWM,1 M:FREE#GRAN+1 ADD IT
LI,3 X'BEEF'
FIN
NORAD EQU,0 $
DATA X'6D000027' ENABLE
LI,1 X'C00'*(COMSYS&1)+X'300'*(0~=(COMSYS&2))
* FOR T64,T65 AND/OR T66,T67
DATA X'6D101202' WD,1 .1202
DO 0
CI,3 X'BEEF'
BE RADOPEN
CI,3 X'BAD1'
BE RADAOPEN
CI,3 X'BAD2'
BE RADNOIO
M:XXX ABORT
RADOPEN M:TYPE (MESS,#RADOPEN)
M:EXIT
RADAOPEN M:TYPE (MESS,#RADAOPEN)
M:EXIT
RADNOIO M:TYPE (MESS,#RADNOIO)
M:SNAP 'CC IN R4',(0,0)
M:XXX
#RADOPEN TEXTC 'SECOND RAD HAS BEEN OPENED'
#RADAOPEN TEXTC 'SECOND RAD IS ALREADY OPEN'
#RADNOIO TEXTC 'NO IO POSSIBLE TO SECOND RAD'
FIN
EXIT M:EXIT
#GJOB0 DATA X'06000000'
TEXTC '9DIAG'
#GJOB1 DATA X'06000000'
TEXTC 'LMMON'
ERROR DATA X'6D000027' ENABLE WE'RE IN TROUBLE ANYWAY
M:TYPE (MESS,ERRMESS)
M:XXX
ERRMESS TEXTC 'ERROR IN PATCHES... ABORTING'
PAGE
PATCHES EQU $-1
LOC PATCHLOC
PATCH$ EQU,0 $
PAGE
LIST,0 1
***********************************************************************
*
* PATCHES TO COC ROUTINES
*
* GENERAL COC PATCHES
* CRT BS SP BS ON RUBOUT
* VARY OUTPUT BUFFERS BASED ON SPEED
* HARDWIRE TIMEOUT FEATURE
* 7E-40,1B-00 CRASH FIX
*
***********************************************************************
* COC+X'296'
DMBS LC MODE4,2 RUBOUT ON SCREENS
BCR,8 COC+X'29A'
LI,5 8 BACKSPACE
BAL,9 COC+X'617'
LI,5 ' ' SPACE
BAL,9 COC+X'617'
LI,5 8 BACKSPACE
MTB,12 CPOS,2
B COC+X'29B'
* COC+X'54F'
CALCBUF LB,5 MODE4,2 VARY OUTPUT BLOCKED BASED ON SPEED
AND,5 M3 GET LINE SPEED
AI,5 6
MI,5 14
SW,9 5 REPLACED INSTRUCTION
BLZ COC+X'557'
B COC+X'551'
* COC+X'7BA'
HWLOGOFF EQU,0 $
LB,6 LB:UN,7 ALLOW LOGON WITH OUT HARDWIRE
BE HWLNRET
LB,6 MODE4INIT,7 CHECK IF AUTOBUAD
BE HWLNRET ALWAYS TIMEOUT PHONE LINES
DO SYSTEM=B
LW,6 TIME GET THE HOUR AND MINUTE
CW,6 STIME 06:30 AM (WAS 7 'TIL 4/02/87 KGC
* WAS 8 'TIL 4/16/86 KGC
* MODIFIED FOR BILL CASH,JIM MASSENA
BL HWLGGO BEFORE 06:30 SO TIMEOUT -FOR RWC)
CW,6 ETIME 17:29 (5:29 PM)
* WAS 17:00 'TIL 7/30/86 (KEN R. ONLY ASKED FOR 1/2H)
* WAS 18:00 'TIL 4/2/87 SEE ABOVE
BL COC+X'7AF' DONT TIMEOUT 06:30-17:29
FIN
HWLGGO LB,6 XLNLIST HARDWIRED LINE TIMEOUT FEATURE
CB,7 XLNLIST,6 EXCEPTIONAL LINES
BE COC+X'7AF' RETURN AS IF HW OR SS2
BDR,6 $-2 CHECK ALL EXCEPTIONS
HWLNRET LB,6 LB:UN,7
B COC+X'7BB'
DO SYSTEM=B
STIME DATA '0630' 06:30 AM
ETIME DATA '1729' 17:29 ( 05:29 PM)
FIN
* ALWAYS PUT SYSTEM LINES AS FIRST 4!
* FOR ON 0 LOGGING ON PRIVILEGE
DO SYSTEM=A
XLNLIST DATA X'090A3506' 8 LINES CSKC,CSCT,CSDH,
DATA X'0E460B10' CSRK,CSBB,SCDB,SCAM,
DATA X'474D0000' CSPC,CSSS
FIN
*
DO SYSTEM=B
XLNLIST DATA X'0A192416' 10 LINES CSKC,CSCT,HP 1,
DATA X'28002648' CSXB,CS00,DRBB,COLD,
DATA X'45216F00' COCM,CARM,BC 0
FIN
*
* COC+X'79C'
STS1B LB,11 UB:ACP,6 WE WILL NOT REPORT AN E:OFF EVENT
BNE STS1B00 IF NO CMD PROCESSOR AND
LB,11 UB:PCT,6 PAGE CNT = 1[+:BIG]
CI,11 1+:BIG
BE COC+X'7A0' THIS SHOULD PREVENT RIDDLED CORE
STS1B00 LI,6 X'E' E:OFF AND SC 1B-00'S ETC....
B COC+X'79D'
* COC+X'7C8'
SETWAIT BNE COC+X'7A0'
LB,6 MODE4INIT,7
BNE COC+X'7C9'
LI,6 4
STB,6 COCTERM,7
B COC+X'7C9'
*T:RCE+X'F'
LOGSYS LI,1 4+(SYSTEM=B) 4 SYSTEM LINES COME FIRST!!
CB,7 XLNLIST,1 ALLOW SYSTEM LINES ON WHEN ON 0
BE T:RCE+X'12' ONLY SYSTEM LINES
BDR,1 $-2
LW,1 S:OUIS (REPLACED INSRUCTION)
B T:RCE+X'10'
DO 0 CPCM
*T:RCE+X'13'
SHIFTSWAP EQU,0 $
LW,15 S:OUAIS (REPLACED INSTRUCTION)
SLS,15 1 DOUBLE IT SO 0 SWAP GRANULE LESS LIKELY
B T:RCE+X'14' RETURN
FIN
PAGE
***********************************************************************
*
* DIABLO 1200 BAUD PROTOCOL
* DIN1200
* D12BRK
* DOUT1200
* D12FC
*
***********************************************************************
* COC+X'42'
* 1200 BAUD DIABLO (ACK/ETX PROTOCOL) INPUT
DIN1200 LI,7 COC+X'43'
BCR,8 $+2
LI,7 COC+X'1B'
LC MODE3,2
BCS,4 XONXOFFINP
LC MODE4,2
BCR,4 *7
CI,5 6 IS IT ACK
BE $+5
CI,5 X'86' ACK W/ PARITY
BE $+3
LC MODE2,2
BCR,8 COC+X'43' NOT AN ACK AND LINE CONNECTED
DOOUT LB,7 MODE5,2
AI,7 78
CI,7 156
BLE $+2
LI,7 156
STB,7 MODE5,2
CI,7 78
BNE COC+X'1B' COUNTER UPDATED ALL DONE WITH CHAR
LD,4 COD:LPC,3 CONVERT LOGICAL LINE TO PHYSICAL
LW,7 2
SW,7 4 PHYS LINE #
* NEW CODE TO OUTPUT CORRECT CHARACTER INSTEAD OF NULL AFTER XON OR ACK
* THIS CODE DUPLICATES MUCH CODE IN COC (SEE COCOP IN COC LINE 1906)
* BUT UNFORTUNATELY WE CANNOT BRANCH TO THOSE ROUTINES BECAUSE
* THEY BRANCH TO PLACES APPROPIATE ONLY IF ENTERED FROM A COC OUTPUT
* INTERRUPT AND WE ARE HERE SERVICING AN INPUT INTERRUPT
LB,11 COCOC,2 OUTPUT COUNT
BEZ COC+X'1B' NOTHING TO OUTPUT
LH,4 COCOR,2 OUTPUT REMOVAL POINTER
BEZ DOOUT20 CHECK FOR LINE DISCONNECT
* THAT MAY NOT BE NECESSARY HERE... BUT UNTIL MY PATCH SPACE RUNS LOW
* I'LL LEAVE IT IN
* ( I JUST GOT AN ACK OR XON... HOW CAN MY LINE BE OFF???)
LB,5 COCBUF,4 CHAR TO OUTPUT
MTB,-1 COCOC,2
AI,11 -2
BLZ COC+X'3CF' SCREECH 13
BEZ DOOUT40 LAST CHARACTER SO RELEASE BUF
AI,4 1
CI,4 X'F'
BANZ DOOUT50
AI,4 -1
DOOUT40 BAL,6 COC+X'42A' RELEASE THE BUFFER
DOOUT50 STH,4 COCOR,2
LW,6 7 PHYS LINE #
SLS,5 8
OR,6 5 MERGE CHAR + LINE IN R6
EXU CO:XDATA,3 TRANSMIT IT
CW,11 SL:UB UNBLOCK USER TIME?
BNE COC+X'1B'
DOOUT54 LB,6 LB:UN,2 USER NUMBER
LB,6 UB:US,6 USER STATE
AI,6 -STOBO
BEZ DOOUT57
AI,6 STOBO-STOB
BNEZ COC+X'1B' NOT STOB OR STOBO
DOOUT57 LI,6 E:CUB
B COC+X'6D' REPORT EVENT
DOOUT20 STB,4 COCOC,2 ZERO OUTPUT COUNT
LC MODE2,2
BCR,8 COC+X'1B' LINE NOT REPORTED OFF
EXU CO:RCVDOFF,3 HANG UP LINE
EXU CO:RCVON,3
B DOOUT54 CHECK FOR UNBLOCK
XONXOFFINP EQU $
LC MODE2,2
BCS,8 DOOUT LINE-OFF FAKE AN X-ON
LI,7 X'7D'
AND,7 5
CI,7 X'11' XON OR XOFF
BNE COC+X'43' NORMAL INPUT PROCESSING
*XON OR XOFF HAS COME IN
CI,5 2
BAZ DOOUT IT WAS XON-START OUTPUT
XOFF LI,7 1
CB,7 MODE5,2
BGE COC+X'1B'
STB,7 MODE5,2 SET FLAG XOFF HAS COME
B COC+X'1B'
* COC+X'801'
* COC+X'38'
D12BRK LC MODE4,2
BCR,4 COC+X'11C'
LI,7 156 RESET MODE5 COUNT
LB,5 MODE5,2 GET PREVIOUS COUNT
STB,7 MODE5,2
BNE COC+X'11C' WASNT DOWN TO ZERO
LD,5 COD:LPC,3 CONVERT LOGICAL TO PHYSICAL LINE
LCW,5 5
AW,5 2
XW,6 5 (ARRG)
EXU CO:XDATA,3 RESTART OUTPUT
XW,6 5
B COC+X'11C'
* COC+X'3AE'
* 1200 BAUD DIABLO (ACK/ETX PROTOCOL) OUTPUT
DOUT1200 BE COC+X'3F1' REPLACED INSTRUCTION
LC MODE3,2
BCS,4 XONXOFFOUT OUR SPECIAL MODE FOR ESC-P
LC MODE4,2
BCR,4 COC+X'3AF' NOT SPECIAL MODE
MTB,0 MODE5,2 CHECK REM OUTPUT COUNT
BLE COC+X'3FB' CLEAR SCANNER AND HOLD FOR NOW
MTB,-1 MODE5,2 DECREMENT COUNTER
BE XMETX
LB,6 MODE5,2
LB,5 COCBUF,4
CI,6 81 ONE BUFFER REMAINING?
BGE COC+X'3B0'
CI,6 78
BL LBUFF
BE XMETX
CKESC CI,5 X'1B'
BNE COC+X'3B0'
AI,6 -3
BGZ $+2
LI,6 0
STB,6 MODE5,2
XMETX LI,5 3 XMIT AN ETX
B COC+X'3D7'
LBUFF CI,6 3
BGE COC+X'3B0'
B CKESC
XONXOFFOUT EQU $
LB,5 MODE5,2
CI,5 1
BG COC+X'3AF' FLAG IN MODE5 SAYS NO XOFF-OUTPUT IT
LI,5 0
STB,5 MODE5,2 0 MEANS THERE IS OUTPUT WAITING
B COC+X'3FB' CLEAR SCANNER AND HOLD TIL XON COMES
* COC+X'65C'
D12FC LC MODE3,2
BCS,4 XONXOFFFC XON-XOFF MODE IN EFFECT
LC MODE4,2
BCR,4 COC+X'688'
MTB,0 MODE5,2 READY TO BLOCK?
BE D12BF BLOCK-- BUFFER CHARACTER
LI,4 -1 CONVERT LOGICAL TO PHYSICAL + COC
AI,4 1
CLM,2 COD:LPC,4
BCS,9 $-2
LD,6 COD:LPC,4
LCW,6 6
AW,6 2
MTB,-1 MODE5,2
LB,7 MODE5,2
BE ETXB
CI,7 78
BE ETXB
CI,5 X'1B'
BNE COC+X'688' SEND NORMAL
B $+2 BUFFER THE CHAR
ETXB AI,6 X'300' LINE # + ETX**8
EXU CO:XDATA,4
D12BF MTB,1 COCOC,2
B COC+X'663'
XONXOFFFC EQU $
LB,6 MODE5,2
CI,6 1
BG COC+X'688' NO XOFF SO OUTPUT THE CHARACTER
LI,6 0 SO WE KNOW WE TRIED
STB,6 MODE5,2
B D12BF BUFFER THE CHARACTER
*
TERMTYPE LC MODE4INIT,2 CHECK D12 BIT
BCS,4 COC+X'3F5' RETURN WITHOUT RESETTING TYPE
STB,4 COCTERM,2 RESET TERM TYPE TO 0 (REPLACE INST)
B COC+X'3F5'
TERMTYPE1 LC MODE4INIT,7 CHECK D12 BIT
BCS,4 COC+X'79C' RETURN WITHOUT RESETTING TYPE
STB,11 COCTERM,7 RESET TERM TYPE TO 0 (REPLACE INST)
B COC+X'79C'
PAGE
***********************************************************************
*
* GSP LIU SUPPORT AND AUTOBAUD
*
***********************************************************************
* COC+X'7E3'
CLR12 LI,4 -1 LOGICAL LINE TO PHYSICAL + COC
* GSP 8/3/89 AND 10/19/89, BUT COC TYPE CRASHES "1B-00" RIDDLED CORE
* STB,4 MODE5,7 ALLOW STOB ESC P TO OUTPUT
AI,4 1
CLM,7 COD:LPC,4
BCS,9 $-2
LD,13 COD:LPC,4
LCW,13 13
AW,13 7
XW,13 6
EXU CO:XDATA,4
XW,13 6
B COC+X'7E7'
* COC+X'801'
ONINIT LB,6 MODE4INIT,2 GSP LIU LINE INITIALIZATION
DO AUTOBAUD
BNE MINT2+1
CI,4 COC+X'D2' AUTOBAUD
BE COC+X'1B'
LB,6 COCTERM,2
CI,6 3
BLE MINT2
LI,6 X'2A' 300 BAUD
BAL,4 MINTSP-1
LB,6 MODE2,2
OR,6 X10
STB,6 MODE2,2
B COC+X'7A0'
MINT2 LB,6 MODE4,2
FIN
STB,6 MODE4,2
MINTSP SLS,6 13 LINE SPEED INFO
CI,4 COC+X'D2' CALLED FROM BREAK?
BNE $+2
LW,5 3 GET COC # (FROM 3 IF FROM BREAK)
MTB,0 TYPE,5 CHECK IF VARIABLE SPEED ALLOWED
BE 0,4 VARIABLE SPEED ONLY AS PER TABLE
CI,6 X'E000'
BAZ $+2 110 BAUD - 2 STOP BITS
AI,6 X'200'
AW,6 2 NEEDS TO BE PHYSICAL LINE ON COC
AND,6 KGCTRASH THIS IS THE QUICKEST WAY (KLUDGE)
EXU COC:SPD,5 SET LINE SPEED
B 0,4
KGCTRASH DATA X'E23F' SPEED BITS,STOP BIT,LINE # ONLY
COC:SPD DATA X'6D603006' SET LINE SPEED COC 0
DATA X'6D603016' SET LINE SPEED COC 1
DATA X'6D603026' SET LINE SPEED COC 2
DO1 SYSTEM=A
TYPE DATA X'01010000' VARIABLE SPEED ON COCS 0 AND 1
DO1 SYSTEM=B
TYPE DATA X'01000000' VARIABLE SPEED ON COC 0
* COC+X'822'
INITSPD EQU,0 $
LD,4 COD:LPC,3 **** KGC 4/5/85 2ND COC ****
AW,4 7 **** KGC 4/5/85 2ND COC ****
LB,6 MODE4,4 **** KGC 4/5/85 2ND COC ****
LW,2 4 **** KGC 4/5/85 2ND COC ****
LW,5 3
BAL,4 MINTSP
LW,6 7 REPLACED INSTRUCTION
B COC+X'823'
DO AUTOBAUD
ASTS DATA X'067C0C7E'
DATA X'66502A00'
TERMS DATA X'00030003'
DATA X'02030200'
MODES DATA X'00282829'
DATA X'292A2A00'
* COC+X'14F'
ASTERS LB,4 ASTS GSP LIU AUTOBAUD CALCULATION
CB,5 ASTS,4
BE $+3
BDR,4 $-2
B COC+X'1B'
LB,5 TERMS,4
STB,5 COCTERM,2
LB,5 MODES,4
STB,5 MODE4,2
LI,4 X'20'
STB,4 MODE2,2
B COC+X'1B'
FIN
* COC+X'794'
TRONIFOFF BCS,1 COC+X'7BA' REPLACE INSTRUCTION
BCR,2 COC+X'795'
XW,7 10 (ARRG)
EXU CO:RCVON,5 TURN RECEIVER ON
XW,7 10
STW,2 COCIPL SAVE AS PARITY ERROR
B COC+X'795'
PAGE
***********************************************************************
*
* GSP COC SUPPORT
*
***********************************************************************
* COC
DO NSCOC
*COC:TYPE DATA,1 X'10',X'10',0,0 COC TYPE (STANDARD OR NONSTANDARD)
COC:TYPE DATA,1 X'10',0,0,0 COC TYPE (STANDARD OR NONSTANDARD)
COC:RDC DATA X'6C503001' RD,5 X'3001' READ CHAR COC 0
DATA X'6C503011' RD,5 X'3011' READ CHAR COC 1
*COC:RDS DATA X'6C003000' RD,0 X'3000' CHECK SCANNER COC 0
* DATA X'6C003010' RD,0 X'3010' CHECK SCANNER COC 1
COC:RDT DATA X'6C003006' RD,0 X'3006' INITIALIZE COC 0
DATA X'6C003016' RD,0 X'3016' INITIALIZE COC 1
COC:RDU DATA X'6C003004' RD,0 X'3004' STATUS COC 0
DATA X'6C003014' RD,0 X'3014' STATUS COC 1
GSPCOC LC COC:TYPE,3 IS COC STANDARD?
BCS,1 GSPCOC1 => NO, MUST BE GSPCOC
DATA X'CDF0000F' TIO,D4 *D4 (REPLACEMENT INSTR)
B COC+X'1F' RETURN
GSPCOC1 EXU COC:RDC,3 RD TO GET CHARACTER
BCS,2 COC+X'24' NOT THIS COC
LW,7 6
SAS,7 -1
STH,5 *4,7
B COC+X'2A'
GSPCOCI LC COC:TYPE,3 IS THIS A STANDARD COC?
BCS,1 GSPCOC5 => NO, MUST BE A GSPCOC
DATA X'CC000005' SIO,0 *5 (REPLACEMENT INSTR)
B COC+X'80D' RETURN FOR STD COC
GSPCOC5 LCI 0
EXU COC:RDU,3 RD TO SEE IF THERE
B COC+X'80E' RETURN
COCWDTO AND,1 MASKS+X'26' XFF00 GET JUST COC BITS
CI,1 X'3000'
BNE *15 NOT COC
LB,1 TABLES+X'146' CSED$PSD
AI,1 X'80' SET CC1
STB,1 TABLES+X'146' CSED$PSD
B *15 RETURN WITH CC1 SET (REPLACEMENT)
GSPCOCT LC COC:TYPE,5
BCS,1 GSPCOCS
DATA X'4D0E0000' TIO,0 0,7 (REPLACEMENT)
B COC+X'78A'
GSPCOCS EXU COC:RDU,5
BCS,8 COC+X'7CC' COC NOT THERE
BCR,1 COC+X'78C' OK
EXU COC:RDT,5 INITIALIZE IT
B COC+X'7CE' GO FINISH INITIALIZATION
DRBCSE STW,15 TABLES+X'167' CSED$LINK
LI,0 0 REPLACEMENT
B CSEHAND:+X'EF'
*
* COCOP+1
COCERR LW,2 7 SAVE THE LINE #
EXU CO:OUTRS,3 READ THE LINE # AGAIN
CW,2 7 IS IT THE SAME?
BNE COCERR1 => NO, GO RECORD IT
AND,7 M6 REPLACEMENT INSTRUCTION
B COCOP+2 PROCEED
COCERR1 MTW,1 COCIPC
STW,2 COCIPL
B COCOP+X'61'
FIN
LIST 0
* MM+X'A4'
MMCHK BG MM+X'B3' REPLACE PATCHED INSTRUCTION
CI,4 1 FROM M:CVM?
BNE MM+X'A5' NO => GIVE IT TO 'EM
CI,8 X'30' PRIV B0 OK
BGE MM+X'A5'
CI,6 X'41' TOPROOT
BG NOG
CI,8 X'20'+X'10' ALLOW A0(B0) TO READ MONITOR
BGE MM+X'A5'
* CI,6 3 PAGE 3? -- CO:RING
* BE NOG
CI,6 7 PAGE 6+ -- COCBUF
BL CKPV
CI,6 8 PAGE 7+
BLE NOG
CI,6 X'16' THIS PATCH?
BE NOG
CKPV CI,8 X'10'+X'20' PRIV 90(B0) NOT CERTAIN PAGES
BGE MM+X'A5'
LW,4 MXFPL+1
CW,4 MMDAT
BE NOG
LC MXFPL+1
BCR,2 NOG
LI,4 6336
AH,4 MXFPL+5
BE NOG+1
AI,4 1010782 WHERE?
BE NOG+1
NOG LI,6 0 GIVE 'EM PAGE 0
LI,4 1 REPLACE CVM FLG
B MM+X'A5'
MMDAT DATA 633652691
LIST 1
*CLRBBUF+X'1A'
PPCHK EQU,0 $
LI,11 FPMC
LI,1 X'4A'
STORE,11 JX:CMAP,1
B CBB5+X'F'
* IOQ+X'4D4'
KIIOP CI,12 X'2000' INTER-OP REQUESTED?
BAZ KIIOP1 NO RESUME NORMAL HANDLING
LB,8 DCT5,1
OR,8 X20 SET INTEROP BIT
STB,8 DCT5,1
KIIOP1 DATA X'6D000027' ENABLE
B IOQ+X'4D5'
PAGE
***********************************************************************
*
* SCHED
*
***********************************************************************
* SCHED+X'233',X'235',X'23C',X'246'
BATIO CI,15 X'100' IS IT BATCH?
BAZ SCHED+X'216' NO GO TO STIOCC
B SCHED+X'215' GIVE BATCH IOC PRIORITY EQUAL TO OL
* SCHED+X'182'
NOBEX BANZ SCHED+X'44' REPLACE INSTRUCTION
LC X'8C48' J:EXTENT
BCR,2 SCHED+X'183' NOT IN EXIT CONTROL- ALLOW BREAKS
CI,15 X'40' ALLOW DELTA EXITS
BAZ SCHED+X'44' IGNORE IF NOT DELTA
B SCHED+X'183' DELTA IN CONTROL - ALLOW BREAKS
* SCHED+X'481'
DSOPNCLS LH,5 UH:FLG,4
CI,5 8 OPEN CLS USER
BANZ SCHED+X'478' YES -- DONT OUTSWAP HIM
B SCHED+X'482'
* SCHED+X'2E4'
OPCSUB LW,5 4 SAVE HEAD
OPCS1 LH,15 UH:FLG,5 GET HIS FLAGS
CI,15 X'100' BATCH?
BANZ OPCS2 YES
LW,4 5 ONLINE OR GHOST SAVE UN
OPCS2 LW,5 U:MISC,5 FOLLOW FLINKS
AND,5 M8
BNE OPCS1
LH,15 UH:FLG,4 REPLACE INSTRUCTION
B SCHED+X'2E5'
* SCHED+X'2BB'
RQBLNK STB,4 UB:PRIO,2
LI,2 0
B SCHED+X'2BC'
* SCHED+X'480'
STOB96 CI,2 X'E' STOB
BNE SCHED+X'48E'
LOAD,5 UX:JIT,4
SLS,5 11
AI,5 X'B7' POINT TO LINE NO. IN JIT
LB,5 0,5
LC MODE3,5 CHECK XON/XOFF KGC 02/19/85
BCS,4 SCHED+X'48E' DONT HOLD XON/XOFF PROTOCOL
LB,5 MODE4,5
CI,5 X'40' DONT HOLD D12
BANZ SCHED+X'48E'
AND,5 M3 STRIP GARBAGE
CI,5 6 4800 BAUD
BL SCHED+X'48E' UNDER 4800 DONT HOLD
B SCHED+X'478' TRY SOMEONE ELSE
PAGE
***********************************************************************
*
* FILE I/O
* EXTRANEOUS EOF REMOVAL
* EOD FILE INTEGRETY INSERTION AND CHECKING
*
***********************************************************************
* WRTF+X'16D'
NXTKEY AW,3 14,6 AW,3 IMT,6 REPLACE NOPED INST
REMEOF CI,3 12 FIRST KEY ON GRAN? (MIDIS IS 12)
BLE WRTF+X'165' YES-- EOF ON PREV GRAN ALREADY GONE
LI,0 X'1FFFF' MASK FOR ADDRESS
AND,0 1,6 GET CFU ADDRESS
CI,0 FILCFU
BLE WRTF+X'165' => YES, SKIP REM EOF
XFD AI,3 -3 POINT TO EOF ALSO DATA FOR AND
LB,0 X'9600',3 GET FLAGS
AND,0 XFD REM EOF NOTE: XFD IS INSTRUCTN
STB,0 X'9600',3 9600 IS BUFF2
AI,3 3
B WRTF+X'165'
* WRTF+X'437' - EODPUT
* WRTF+X'469' - EODCK
EODDATA DATA X'E0DE0D0'
PBEOD DATA 0
PVEOD DATA 0
EODPUT LI,2 X'7FC'
AND,2 3
BE SAVCBD
SLS,2 -2
LW,1 EODDATA
STW,1 X'9400',2 BUFF1
B SAVCBD
EODCK LI,4 X'7FC'
AND,4 3
BE WRTF+X'41A'
SLS,4 -2
LW,4 X'9400',4
BE NOEOD THIS IS UNEXPLAINED
*8/3/89 GSP SCSI 12/88 OS WRITES SHORT SECTORS SEE RDF+X'1C7'
* REPLACE LW,2 .C WITH LI,2 .800
CW,4 EODDATA
BE WRTF+X'41A'
LW,1 1,6 LW,1 CFU,6
LW,3 3,1 GET GAVAL
BNE EODPRV
MTW,1 PBEOD PUBLIC ERROR CNT
B WRTF+X'452'
EODPRV EQU,0 $
STW,3 PVGAVL
STW,1 PVCFU
LW,3 4,1
STW,3 PVCCBD
LI,3 0
STW,3 3,1
MTW,1 PVEOD PRIVATE PACK FILE ERROR CNT
B WRTF+X'452'
PCF DATA 0
PGV DATA 0
PCCB DATA 0
NOEOD LW,4 1,6
STW,4 PCF
STW,3 PCCB
LW,4 4,4
STW,4 PGV
B WRTF+X'41A'
PVCFU DATA 0
PVGAVL DATA 0
PVCCBD DATA 0
PAGE
***********************************************************************
*
* MISCELLANEOUS
*
***********************************************************************
DO 0 CPCM
* PFSR:+X'72'
NO2RAD LH,5 DCT1,5 REPLACEMENT INSTRUCTION
CI,5 X'2F1' IS THIS THE SECOND RAD?
BNE PFSR:+X'73' => NO CONTINUE
MTW,0 M:FREE#GRAN+1 IS THIS RAD IN USE?
BLE PFSR:+X'77' => NO
B PFSR:+X'73' YES IT IS
FIN
* PFSR:+X'76'
PFSRHIO HIO,0 *5 GSP 10/30/85
B PFSR:+X'73'
PFSRTYP DATA X'20020000'
PFSRLOG LW,8 PFSRTYP TYPE AND LENGTH FOR POWERON ERRLOG
LI,6 8 POINTER TO MSG
AW,6 Y4 FLAG FOR ERRLOG NOT TO CALL IOQ
LW,10 POWROFF
BAL,5 ERRLOG
B PFSR:+X'8D'
* PM+X'5A'
RESP90 LI,3 13
SH,1 CH:DRT+1,3
AH,1 DRTHEN,3
BE PM+X'72'
B PM+X'5B'
PAGE INTER-SYSTEM COMMUNICATIONS
***********************************************************************
*
* INTER-SYSTEM COMMUNICATIONS
*
***********************************************************************
DO COMSYS~=0
TRAP64 EQU UMOVPTCH+0
TRAP65 EQU UMOVPTCH+1
TRAP66 EQU UMOVPTCH+2
TRAP67 EQU UMOVPTCH+3