forked from moshix/mvs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSOS_assembler_output.txt
3473 lines (3468 loc) · 361 KB
/
SOS_assembler_output.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
1 High Level Assembler Option Summary (PTF UK37157) Page 1
- HLASM R6.0 2016/08/29 08.42
0 No Overriding ASMAOPT Parameters
Overriding Parameters- OBJECT,ESD,RXREF,RLD,XREF(SHORT,UNREFS),DXREF,LIST,TERM,ASA
No Process Statements
Options for this Assembly
0 NOADATA
ALIGN
3 ASA
BATCH
CODEPAGE(047C)
NOCOMPAT
NODBCS
NODECK
3 DXREF
3 ESD
NOEXIT
FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0)
NOFOLD
NOGOFF
NOINFO
LANGUAGE(EN)
NOLIBMAC
LINECOUNT(60)
3 LIST(121)
MACHINE(,NOLIST)
MXREF(SOURCE)
3 OBJECT
OPTABLE(UNI,NOLIST)
NOPCONTROL
NOPESTOP
NOPROFILE
NORA2
NORENT
3 RLD
3 RXREF
SECTALGN(8)
SIZE(MAX)
NOSUPRWARN
SYSPARM()
3 TERM(WIDE)
NOTEST
THREAD
NOTRANSLATE
TYPECHECK(MAGNITUDE,REGISTER)
USING(NOLIMIT,MAP,WARN(15))
NOWORKFILE
3 XREF(SHORT,UNREFS)
Standard DD Names- SYSLIN SYSLIB SYSIN SYSPRINT SYSPUNCH SYSUT1 SYSTERM SYSADATA ASMAOPT
Overriding DD Names- SYS00013 SYS00005 SYS00011 SYS00012 SYS00010
1 External Symbol Dictionary Page 2
-Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2016/08/29 08.42
0PROGRAM SD 00000001 00000000 00001770 00
CARDLDR SD 00000002 00001770 000000A0 00
IPLCARD SD 00000003 00001810 00000050 00
1 Sample Operating System Version 2.00 Page 3
Active Usings: None
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 2 *********************************************************************** 00020000
3 * * 00030000
4 * ***************************************************************** * 00040000
5 * * * * 00050000
6 * * Sample Operating System * * 00060002
7 * * Version 2.00 * * 00067002
8 * * Developed at MIT 1973 * * 00074002
9 * * * * 00090000
10 * ***************************************************************** * 00100000
11 * * 00100602
12 * Update 2015/10/31 Juergen Winkelmann, e-mail [email protected] * 00101202
13 * * 00101802
14 * - change storage protection alignments to 4K \ * 00102402
15 * - replace SSK/ISK instructions with SSKE/ISKE > 4K support * 00103002
16 * - minor changes in storage protection logic / * 00103602
17 * - change number of parallel processing streams to 4 * 00104202
18 * - change core size to 16M * 00104802
19 * - replace table of valid $JOB card core requests with general * 00105402
20 * logic rounding up any none full page request entered to next * 00106002
21 * full page * 00106602
22 * - add IPL card and two card loader for one stop creation of an * 00107202
23 * IPLable card deck * 00107802
24 * - ignore external interrupts during initialization to avoid * 00108402
25 * IPLRTN getting interrupted by the interval timer * 00109002
26 * * 00109103
27 * Update 2015/11/05 Juergen Winkelmann, e-mail [email protected] * 00109203
28 * * 00109303
29 * - allow reloading card readers without needing to re-IPL the * 00109403
30 * system. This functionality relies on Hercules' card reader * 00109503
31 * behavior with the EOF initialization in place. It will not * 00109603
32 * work in INTR mode. * 00109703
33 * * 00109744
34 * Update 2015/11/13 Juergen Winkelmann, e-mail [email protected] * 00109784
35 * * 00109824
36 * - add UCB to support a console at 009 using the EXCP device * 00109864
37 * handler. * 00109904
38 * * 00110000
39 *********************************************************************** 00120000
-
41 PRINT ON,NODATA,GEN 00140000
000000 00000 01770 42 PROGRAM CSECT , sample operating system starts at zero 00150002
001770 01770 000A0 43 CARDLDR CSECT , two card loader follows at the end 00150102
44 *** 00150202
45 *** IPL card 00150302
46 *** 00150402
001810 01810 00050 47 IPLCARD CSECT , IPLable deck must begin with this card 00150502
001810 0000000000 48 PSWD DC F'0',X'00' initial program status word, disabled 00150602
001815 001770 49 DC AL3(LOADER) start execution at load address 00150702
001818 02001770 50 CCW1 DC X'02',AL3(LOADER) read 1st card to load address 00150802
00181C 40000050 51 DC XL4'40000050' chain, read length = 80 00150902
001820 020017C0 52 CCW2 DC X'02',AL3(LOADER+80) read 2nd card to load addr + 80 00151002
001824 00000050 53 DC XL4'00000050' read length = 80 00151102
001828 E2819497938540D6 54 DC C'Sample Operating System Version 2.00' eye catcher 00151202
1 Sample Operating System Version 2.00 Page 4
Active Usings: None
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0001850 0000000000000000 55 DC 16X'00' pad to card length 00151302
56 *** 00151402
57 *** loader 00151502
58 *** 00151602
59 * 00151702
60 * Initialize 00151802
61 * 00151902
001770 01770 000A0 62 CARDLDR CSECT , two card loader must follow IPL card 00152002
001770 05C0 63 BALR R12,0 establish .. 00152102
001772 4120 0002 00002 64 LA R2,2 .. base .. 00152202
001776 1BC2 65 SR R12,R2 .. register 00152302
R:C 01770 66 USING CARDLDR,R12 tell assembler 00152402
001778 41B0 0000 00000 67 LA R11,0 addressability of .. 00152502
R:B 00000 68 USING PROGRAM,R11 .. sample operating system 00152602
00177C 4120 0000 00000 69 LA R2,0 I/O .. 00152702
001780 4130 C06A 017DA 70 LA R3,IOINTRPT .. new PSWD 00152802
001784 9023 B078 00078 71 STM R2,R3,IONEW store I/O new PSWD 00152902
001788 8000 C07E 017EE 72 SSM ENBLECH0 enable interrupts from channel 0 00153002
00178C 4150 C0A0 01810 73 LA R5,CCWCHAIN address of card reader CCW chain 00153102
001790 5050 B048 00048 74 ST R5,CAW store address in CAW 00153202
001794 5830 C094 01804 75 L R3,NUMCARDS number of cards to read 00153302
001798 5840 C090 01800 76 L R4,LOADADDR target address of loaded code 00153402
77 * 00153502
78 * create CCW chain 00153602
79 * 00153702
00179C 1824 80 NEXTCARD LR R2,R4 load next card here 00153802
00179E BF28 C080 017F0 81 ICM R2,B'1000',READ insert write command 00153902
0017A2 5020 5000 00000 82 ST R2,0(,R5) store CCW 00154002
0017A6 4120 0050 00050 83 LA R2,80 length of card 00154102
0017AA 5020 5004 00004 84 ST R2,4(,R5) store length in CCW, zero all flags 00154202
0017AE 9640 5004 00004 85 OI 4(R5),X'40' indicate command chaining 00154302
0017B2 4140 4050 00050 86 LA R4,80(,R4) increment target address 00154402
0017B6 4150 5008 00008 87 LA R5,8(,R5) point to next CCW 00154502
0017BA 4630 C02C 0179C 88 BCT R3,NEXTCARD read next card 00154602
0017BE 5B50 C098 01808 89 S R5,EIGHT point to previous CCW 00154702
0017C2 94BF 5004 00004 90 NI 4(R5),X'BF' clear command chaining flag 00154802
91 * 00154902
92 * read cards and wait for completion 00155002
93 * 00155102
0017C6 9C00 000C 0000C 94 SIO 12(0) read cards 00155202
0017CA 4120 C066 017D6 95 LA R2,*+12 continue here after I/O completion 00155302
0017CE 5020 C08C 017FC 96 ST R2,CONTINUE store continue address in PSWD skeleton 00155402
0017D2 8200 C088 017F8 97 LPSW WAITPSWD wait for I/O completion 00155502
98 * 00155602
99 * "IPL" the Sample Operating System 00155702
100 * 00155802
0017D6 8200 0000 00000 101 LPSW 0 transfer control 00155902
102 * 00156002
103 * I/O interrupt handler 00156102
104 * 00156202
017DA 105 IOINTRPT EQU * 00156302
0017DA 9104 B044 00044 106 TM CSW+4,X'04' device end received? 00156402
0017DE 47E0 C07A 017EA 107 BNO IOINTRTN -> no, keep waiting 00156502
0017E2 94FD B039 00039 108 NI IOOLD+1,X'FD' -> yes, terminate wait state and .. 00156602
0017E6 947F B038 00038 109 NI IOOLD,X'7F' .. and disable channel 0 interrupts 00156702
1 Sample Operating System Version 2.00 Page 5
Active Usings: PROGRAM,R11 CARDLDR,R12
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
00017EA 8200 B038 00038 110 IOINTRTN LPSW IOOLD return to mainline 00156802
111 DROP R11,R12 no longer needed 00156902
112 * 00157002
113 * Data area 00157102
114 * 00157202
0017EE F8F0 115 ENBLECH0 DC C'80' mask to enable channel 0 interrupts 00157302
0017F0 02 116 READ DC X'02' read a card 00157402
0017F8 117 DS 0D align 00157502
0017F8 80020000 118 WAITPSWD DC X'80020000' wait with channel 0 interrupts enabled 00157602
0017FC 119 CONTINUE DS F continue here after wait 00157702
001800 00000000 120 LOADADDR DC F'0' code is to be loaded here 00157802
001804 0000004B 121 NUMCARDS DC F'75' number of cards to read 00157904
001808 00000008 122 EIGHT DC F'8' CCW length 00158002
001810 123 CCWCHAIN DS 0D start of card reader CCW chain 00158102
124 *** 00158202
125 *** Sample Operating System code begins here 00158302
126 *** 00158402
000000 00000 01770 127 PROGRAM CSECT , sample OS must follow loader cards 00158502
0 000000 129 CORESIZE EQU 16777216 bytes of core in object machine 00170002
0 R:0 00000 131 USING *,0 COMMUNICATIONS AREA 00190000
0000000 000000000000103E 133 IPLPSW DC B'00000000',B'00000000',X'0000',X'00',AL3(IPLRTN) 00210000
000008 134 IPLCCW1 DS D . IPL CCW #1 00220000
000010 135 IPLCCW2 DS D . IPL CCW #2 00230000
000018 136 EXTOLD DS D . EXTERNAL OLD PSW 00240000
000020 137 SVCOLD DS D . SVC OLD PSW 00250000
000028 138 PGMOLD DS D . PROGRAM INTERRUPT OLD PSW 00260000
000030 139 MCHKOLD DS D . MACHINE CHECK OLD PSW 00270000
000038 140 IOOLD DS D . I/O INTERRUPT OLD PSW 00280000
000040 141 CSW DS D . CHANNEL STATUS WORD 00290000
000048 142 CAW DS F . CHANNEL ADDRESS WORD 00300000
00004C 143 UNUSED0 DS F . 00310000
000050 FFFFFFFF 144 TIMER DC F'-1' . TIMER 00320000
000054 00000000 145 UNUSED1 DC F'0' . 00330000
000058 000000000000027A 146 EXTNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(EXTHANDL) 00340000
000060 00000000000002B2 147 SVCNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(SVCHANDL) 00350000
000068 00000000000002B0 148 PGMNEW DC B'00000000',B'00000000',X'0000',X'00',AL3(PGMHANDL) 00360000
000070 0002000000000000 149 MCHKNEW DC B'00000000',B'00000010',X'0000',X'00',AL3(0) 00370000
000078 00000000000017DA 150 IONEW DC B'00000000',B'00000000',X'0000',X'00',AL3(IOINTRPT) <-+ 00380002
151 *** | 00382002
152 *** IOINTRPT will be replaced with IOHANDL after IPL by IPLRTN -----+ 00384002
153 *** 00386002
000080 00080 00180 154 ORG *+X'100' SPACE OVER STAND ALONE DUMP AREA 00390000
000180 00001740 155 FSBPTR DC A(VERYEND) . FSB POINTER 00400000
000184 0000000100000000 156 FSBSEM DC F'1,0' . FSB SEMAPHORE 00410000
00018C 0000000000000000 157 MEMORY DC F'0,0' . MEMORY SEMAPHORE 00420000
000194 0000000100000000 158 CAWSEM DC F'1,0' . CAW SEMAPHORE 00430000
000019C 160 TRAPSAVE DS 16F . STORAGE FOR EXTERNAL INTERRUPTS 00450000
0001DC 161 IOHSAVE DS 16F . STORAGE FOR I/O INTERRUPTS 00460000
000021C 163 SYSSEMSA DS CL84 . SYSTEM SEMAPHORE SAVE AREA 00480000
1 Sample Operating System Version 2.00 Page 6
Active Usings: PROGRAM,R0
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000270 165 RUNNING DS A . RUNNING 00500000
000274 166 NEXTTRY DS A . NEXTTRY 00510000
000278 167 NEXTTRYM DS C,0H . NEXTTRY MODIFIED 00520000
1 Sample Operating System Version 2.00 Page 7
Active Usings: PROGRAM,R0
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 169 *********************************************************************** 00540000
170 * * 00550000
171 * EXTERNAL, PROGRAM, AND SVC INTERRUPT HANDLERS * 00560000
172 * * 00570000
173 *********************************************************************** 00580000
0 0027A 175 EXTHANDL EQU * . EXTERNAL INTERRUPT HANDLER 00600000
00027A 900F 019C 0019C 176 STM 0,15,TRAPSAVE . SAVE REGISTERS 00610000
00027E 0510 177 BALR 1,0 . ESTABLISH ADDRESSING 00620000
R:1 00280 178 USING *,1 00630000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 178 in /mbhfs/sos4k.asm on volume:
000280 9580 001B 0001B 179 CLI EXTOLD+3,X'80' . SEE IF TIMER TRAP 00640000
000284 4770 1028 002A8 180 BNE EXTHRET . IF NOT, IGNORE 00650000
000288 58F0 0270 00270 181 L 15,RUNNING . SET UP REGISTERS FOR TRAFFIC 00660000
R:F 00000 182 USING PCB,15 . CONTROLLER (XPER) 00670000
00028C 95FF F019 00019 183 CLI PCBBLOKT,X'FF' . IF BLOCKED, NO PROCESS IS 00680000
000290 4780 1028 002A8 184 BE EXTHRET . RUNNABLE, SO RETURN 00690000
000294 41E0 F04C 0004C 185 LA 14,PCBISA . GET SAVE AREA 00700000
R:E 00000 186 USING SA,14 00710000
000298 D207 E000 0018 00000 00018 187 MVC SAPSW,EXTOLD . AND STORE OLD STUFF INTO IT 00720000
00029E D23F E008 019C 00008 0019C 188 MVC SAREGS,TRAPSAVE 00730000
0002A4 47F0 12EA 0056A 189 B XPER . THEN GO TO TRAFFIC SCHEDULER 00740000
190 DROP 14,15 00750000
0002A8 980F 019C 0019C 191 EXTHRET LM 0,15,TRAPSAVE . TO IGNORE AN INTERRUPT, RELOAD 00760000
0002AC 8200 0018 00018 192 LPSW EXTOLD . AND TRANSFER BACK 00770000
0 002B0 194 PGMHANDL EQU * . PROGRAM INTERRUPT HANDLER 00790000
0002B0 0A6F 195 SVC C'?' . IN ANY CASE, AN ERROR 00800000
1 Sample Operating System Version 2.00 Page 8
Active Usings: PROGRAM,R0 PROGRAM+X'280',R1
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 197 *********************************************************************** 00820000
198 * * 00830000
199 * SVC INTERRUPT HANDLER * 00840000
200 * * 00850000
201 * FOR ALL ROUTINES ENTERED BY SVC INTERRUPT, THE * 00860000
202 * FOLLOWING REGISTERS CONTAIN THIS INFORMATION: * 00870000
203 * * 00880000
204 * REGISTER 1 - BASE REGISTER FOR ROUTINE * 00890000
205 * REGISTER 2 - POINTER TO ARGUMENT LIST (IF ANY) * 00900000
206 * REGISTER 14 - POINTER TO SAVEAREA USED FOR THIS SVC * 00910000
207 * REGISTER 15 - POINTER TO PCB PRESENTLY RUNNING * 00920000
208 * * 00930000
209 *********************************************************************** 00940000
0 002B2 211 SVCHANDL EQU * . SVC HANDLER 00960000
0002B2 900F 019C 0019C 212 STM 0,15,TRAPSAVE . SAVE REGISTERS 00970000
0002B6 0590 213 BALR 9,0 . ESTABLISH ADDRESSING 00980000
R:9 002B8 214 USING *,9 00990000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 178
** ASMA435I Record 214 in /mbhfs/sos4k.asm on volume:
0002B8 98AE 905C 00314 215 LM 10,14,SVCCONST . INITIALIZE REGISTERS 01000000
0002BC 43A0 0023 00023 216 IC 10,SVCOLD+3 . GET SVC CODE 01010000
0002C0 43AA 9070 00328 217 IC 10,SVCHTABL(10) . TRANSLATE INTO TABLE OFFSET 01020000
0002C4 41AA 9170 00428 218 LA 10,SVCRTN(10) . REG 10 -> THE CORRECT PSW 01030000
0002C8 9500 A002 00002 219 CLI 2(10),X'00' . IS THIS CALL PROTECTED? 01040000
0002CC 4780 904A 00302 220 BE SVCHPROT . THEN SEE IF WE CAN CALL IT 01050000
0002D0 58F0 0270 00270 221 SVCOK L 15,RUNNING . GET PCB POINTER 01060000
R:F 00000 222 USING PCB,15 01070000
0002D4 9500 A003 00003 223 CLI 3(10),X'00' . IS IT A SYSTEM SAVEAREA? 01080000
0002D8 4780 9026 002DE 224 BE SYSSEM . DON'T USE REG 14 AS PCB POINTER 01090000
0002DC 18EF 225 LR 14,15 . ELSE, SET UP PCB POINTER 01100000
0002DE 43BA 0003 00003 226 SYSSEM IC 11,3(10) . GET POINTER TO SAVE AREA OFFSET 01110000
0002E2 5AEB 9210 004C8 227 A 14,SVCSAVE(11) . REG 14 -> SAVE AREA 01120000
0002E6 954B 0023 00023 228 CLI SVCOLD+3,C'.' . ARE WE CALLING XPER? 01130000
0002EA 4780 9042 002FA 229 BE SVCXPER . IF SO, DON'T SAVE RETURN STATUS 01140000
R:E 00000 230 USING SA,14 01150000
0002EE D207 E000 0020 00000 00020 231 MVC SAPSW,SVCOLD . SAVE PSW 01160000
0002F4 D23F E008 019C 00008 0019C 232 MVC SAREGS,TRAPSAVE . SAVE REGISTERS 01170000
0002FA 581A 0004 00004 233 SVCXPER L 1,4(10) . MAKE ADDRESSING EASY WITHIN 01180000
0002FE 8200 A000 00000 234 LPSW 0(10) . ROUTINE, AND GO THERE 01190000
000302 58C0 0020 00020 235 SVCHPROT L 12,SVCOLD . GET PROTECTION KEY 01200000
000306 14CD 236 NR 12,13 . IS IT A USER? 01210000
000308 4780 9018 002D0 237 BZ SVCOK . IF NO, THAT'S FINE 01220000
00030C 41A0 91F8 004B0 238 LA 10,SVCRTN+136 . ELSE SET UP CALL TO XQUE 01230000
000310 47F0 9018 002D0 239 B SVCOK . 01240000
240 DROP 9 01250000
000314 0000000000000000 241 SVCCONST DC 3F'0',X'00F00000',F'0' 01260000
0000328 8484848484848484 243 SVCHTABL DC 256X'84' . TABLE OF PSW OFFSETS 01280000
000428 00428 003FF 244 ORG SVCHTABL+C'P' 01290000
0003FF 00 245 DC AL1(0) 01300000
000400 00400 0040D 246 ORG SVCHTABL+C'V' 01310000
00040D 08 247 DC AL1(8) 01320000
00040E 0040E 00382 248 ORG SVCHTABL+C'!' 01330000
1 Sample Operating System Version 2.00 Page 9
Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000382 10 249 DC AL1(16) 01340000
000383 00383 00393 250 ORG SVCHTABL+C',' 01350000
000393 18 251 DC AL1(24) 01360000
000394 00394 003EA 252 ORG SVCHTABL+C'B' 01370000
0003EA 20 253 DC AL1(32) 01380000
0003EB 003EB 003E9 254 ORG SVCHTABL+C'A' 01390000
0003E9 28 255 DC AL1(40) 01400000
0003EA 003EA 003EE 256 ORG SVCHTABL+C'F' 01410000
0003EE 30 257 DC AL1(48) 01420000
0003EF 003EF 003F1 258 ORG SVCHTABL+C'I' 01430000
0003F1 38 259 DC AL1(56) 01440000
0003F2 003F2 003F9 260 ORG SVCHTABL+C'J' 01450000
0003F9 40 261 DC AL1(64) 01460000
0003FA 003FA 00373 262 ORG SVCHTABL+C'.' 01470000
000373 48 263 DC AL1(72) 01480000
000374 00374 00401 264 ORG SVCHTABL+C'R' 01490000
000401 50 265 DC AL1(80) 01500000
000402 00402 0040A 266 ORG SVCHTABL+C'S' 01510000
00040A 58 267 DC AL1(88) 01520000
00040B 0040B 003EB 268 ORG SVCHTABL+C'C' 01530000
0003EB 60 269 DC AL1(96) 01540000
0003EC 003EC 003FD 270 ORG SVCHTABL+C'N' 01550000
0003FD 68 271 DC AL1(104) 01560000
0003FE 003FE 00410 272 ORG SVCHTABL+C'Y' 01570000
000410 70 273 DC AL1(112) 01580000
000411 00411 00411 274 ORG SVCHTABL+C'Z' 01590000
000411 78 275 DC AL1(120) 01600000
000412 00412 003EC 276 ORG SVCHTABL+C'D' 01610000
0003EC 80 277 DC AL1(128) 01620000
0003ED 003ED 00397 278 ORG SVCHTABL+C'?' 01630000
000397 88 279 DC AL1(136) 01640000
000398 00398 003F0 280 ORG SVCHTABL+C'H' 01650000
0003F0 90 281 DC AL1(144) 01660000
0003F1 003F1 003ED 282 ORG SVCHTABL+C'E' 01670000
0003ED 98 283 DC AL1(152) 01680000
0003EE 003EE 00428 284 ORG SVCHTABL+256 01690000
0000428 286 SVCRTN DS 0D . THE PSWS 01710000
287 * IN THE FOLLOWING PSWS, THE THIRD BYTE INDICATES * 01720000
288 * WHETHER THE SVC IS RESTRICTED: * 01730000
289 * X'00' -> OPERATING SYSTEM ONLY * 01740000
290 * X'FF' -> AVAILABLE TO USER ALSO * 01750000
291 * * 01760000
292 * THE FOURTH BYTE INDICATES WHICH SAVE AREA TO USE; * 01770000
293 * SVCSAVE BELOW SHOWS THE CODE VALUES. * 01780000
000428 00000000000004EE 294 DC B'00000000',B'00000000',X'0000',X'00',AL3(XP) 01790000
000430 0000000000000534 295 DC B'00000000',B'00000000',X'0000',X'00',AL3(XV) 01800000
000438 00000004000005C0 296 DC B'00000000',B'00000000',X'0004',X'00',AL3(XEXC) 01810000
000440 00000004000005D2 297 DC B'00000000',B'00000000',X'0004',X'00',AL3(XCOM) 01820000
000448 0000000400000744 298 DC B'00000000',B'00000000',X'0004',X'00',AL3(XB) 01830000
000450 FF00000C00000600 299 DC B'11111111',B'00000000',X'000C',X'00',AL3(XA) 01840000
000458 FF00000C000006B6 300 DC B'11111111',B'00000000',X'000C',X'00',AL3(XF) 01850000
000460 000000040000087A 301 DC B'00000000',B'00000000',X'0004',X'00',AL3(XI) 01860000
000468 00000004000008A6 302 DC B'00000000',B'00000000',X'0004',X'00',AL3(XJ) 01870000
000470 000000040000056A 303 DC B'00000000',B'00000000',X'0004',X'00',AL3(XPER) 01880000
1 Sample Operating System Version 2.00 Page 10
Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000478 FF00FF08000008EC 304 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XR) 01890000
000480 FF00FF0800000978 305 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XS) 01900000
000488 FF00FF0800000780 306 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XC) 01910000
000490 0000FF04000008CA 307 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XN) 01920000
000498 0000FF0800000A0A 308 DC B'00000000',B'00000000',X'FF08',X'00',AL3(XY) 01930000
0004A0 FF00FF0800000A42 309 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XZ) 01940000
0004A8 FF00FF08000007C6 310 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XD) 01950000
0004B0 0000FF0400000A8E 311 DC B'00000000',B'00000000',X'FF04',X'00',AL3(XQUE) 01960000
0004B8 FF00FF0800000842 312 DC B'11111111',B'00000000',X'FF08',X'00',AL3(XH) 01970000
0004C0 FF00000C00000608 313 DC B'11111111',B'00000000',X'000C',X'00',AL3(XAUTO) 01980000
00004C8 315 SVCSAVE DS 0F . THE SAVE AREA OFFSETS 02000000
0004C8 0000021C 316 DC A(SYSSEMSA) . CODE 00 -> SYSSEMSA 02010000
0004CC 0000004C 317 DC A(PCBISA-PCB) . CODE 04 -> INTERRUPT SAVE AREA 02020000
0004D0 000000A0 318 DC A(PCBFSA-PCB) . CODE 08 -> FAULT SAVE AREA 02030000
0004D4 000000F4 319 DC A(PCBMSA-PCB) . CODE 0C -> MEMORY SAVE AREA 02040000
-
321 *********************************************************************** 02060000
322 * * 02070000
323 * RETURN SEQUENCE FOR REQUEST DRIVEN ROUTINES AND TRAFFIC CONTROLLER * 02080000
324 * * 02090000
325 *********************************************************************** 02100000
00004D8 327 DS 0D 02120000
0004D8 00000000000004E0 328 RETURN DC B'00000000',B'00000000',X'0000',X'00',AL3(RETURNR) 02130000
0 004E0 330 RETURNR EQU * . RETURN ROUTINE FOR SVC'S AND XPER 02150000
0004E0 D207 0020 E000 00020 00000 331 MVC SVCOLD,SAPSW . SAVE PSW IN A SAFE PLACE 02160000
0004E6 980F E008 00008 332 LM 0,15,SAREGS . RELOAD REGISTERS 02170000
0004EA 8200 0020 00020 333 LPSW SVCOLD . AND RETURN 02180000
1 Sample Operating System Version 2.00 Page 11
Active Usings: PROGRAM,R0 PROGRAM+X'280',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 335 *********************************************************************** 02200000
336 * * 02210000
337 * REQUEST DRIVEN ROUTINES * 02220000
338 * * 02230000
339 *********************************************************************** 02240000
-
341 *********************************************************************** 02260000
342 * * 02270000
343 * XP ROUTINE * 02280000
344 * * 02290000
345 * FUNCTION: TO IMPLEMENT "P" PRIMITIVE FOR SEMAPHORES * 02300000
346 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02310000
347 * SM DS 0D SEMAPHORE DEFINITION * 02320000
348 * SMVAL DS F VALUE * 02330000
349 * SMPTR DS A POINTER TO FIRST WAITER * 02340000
350 * ROUTINES USED: XPER * 02350000
351 * PROCEDURE: SUBTRACT ONE FROM SMVAL; IF NON-NEGATIVE, RETURN. * 02360000
352 * IF NEGATIVE, PLACE RUNNING PROCESS AT END OF LIST * 02370000
353 * OF PRECESSES WAITING ON SM. BLOCK CALLING PROCESS; * 02380000
354 * ENTER TRAFFIC CONTROLLER. * 02390000
355 * ERROR CHECKS: NONE * 02400000
356 * INTERRUPTS: OFF * 02410000
357 * USER ACCESS: NO * 02420000
358 * * 02430000
359 *********************************************************************** 02440000
0 004EE 361 XP EQU * . THE XP ROUTINE 02460000
R:1 004EE 362 USING *,1 02470000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 362 in /mbhfs/sos4k.asm on volume:
R:2 00000 363 USING SM,2 . ARGUMENT IS A SEMAPHORE 02480000
0004EE 5830 2000 00000 364 L 3,SMVAL . GET THE VALUE 02490000
0004F2 0630 365 BCTR 3,0 . SUBTRACT ONE 02500000
0004F4 5030 2000 00000 366 ST 3,SMVAL . AND STORE IT BACK 02510000
0004F8 1233 367 LTR 3,3 . SET CONDITION CODE 02520000
0004FA 4740 1014 00502 368 BM XPWAIT . IF IT'S NEGATIVE, MUST WAIT 02530000
0004FE 8200 04D8 004D8 369 LPSW RETURN . ELSE RETURN NOW 02540000
000502 4140 2004 00004 370 XPWAIT LA 4,SMPTR . START GOING DOWN 02550000
000506 5850 2004 00004 371 L 5,SMPTR . CHAIN OF POINTERS 02560000
372 DROP 15 02570000
R:5 00000 373 USING PCB,5 02580000
00050A 1255 374 XPLOOP LTR 5,5 . IF REACHED END 02590000
00050C 4780 102E 0051C 375 BZ XPTHEN . ADD OUR PCB ON. ELSE, 02600000
000510 4140 5030 00030 376 LA 4,PCBNSW . INCREMENT POINTERS 02610000
000514 5850 5030 00030 377 L 5,PCBNSW 02620000
000518 47F0 101C 0050A 378 B XPLOOP . AND TRY AGAIN 02630000
379 DROP 5 02640000
R:F 00000 380 USING PCB,15 02650000
00051C D203 4000 0270 00000 00270 381 XPTHEN MVC 0(4,4),RUNNING . WE'RE AT THE END 02660000
000522 5050 F030 00030 382 ST 5,PCBNSW . STORE NULL POINTER 02670000
000526 92FF F019 00019 383 MVI PCBBLOKT,X'FF' . AND WE'RE BLOCKED 02680000
00052A D253 F04C 021C 0004C 0021C 384 MVC PCBISA,SYSSEMSA . SWITCH SAVE AREAS 02690000
000530 47F0 107C 0056A 385 B XPER . SO RUN SOMEONE ELSE 02700000
1 Sample Operating System Version 2.00 Page 12
Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 386 DROP 2 02710000
1 Sample Operating System Version 2.00 Page 13
Active Usings: PROGRAM,R0 PROGRAM+X'4EE',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 388 *********************************************************************** 02730000
389 * * 02740000
390 * XV ROUTINE * 02750000
391 * * 02760000
392 * FUNCTION: TO IMPLEMENT "V" PRIMITIVE FOR SEMAPHORES * 02770000
393 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS SM * 02780000
394 * SM DS 0D SEMAPHORE DEFINITION * 02790000
395 * SMVAL DS F VALUE * 02800000
396 * SMPTR DS A POINTER TO FIRST WAITER * 02810000
397 * ROUTINES USED: NONE * 02820000
398 * PROCEDURE: ADD ONE TO SMVAL; IF > ZERO, RETURN. IF ZERO OR * 02830000
399 * LESS, REMOVE FIRST PROCESS FROM WAITER CHAIN; * 02840000
400 * UNBLOCK IT; IF NEXTTRYM NOT SET, SET IT AND SET * 02850000
401 * NEXTTRY TO THAT PROCESS; RETURN; IF NEXTTRYM SET, * 02860000
402 * RETURN. * 02870000
403 * ERROR CHECKS: NONE * 02880000
404 * INTERRUPTS: OFF * 02890000
405 * USER ACCESS: NO * 02900000
406 * * 02910000
407 *********************************************************************** 02920000
0 00534 409 XV EQU * . THE XV ROUTINE 02940000
R:1 00534 410 USING *,1 02950000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 410 in /mbhfs/sos4k.asm on volume:
R:2 00000 411 USING SM,2 . ARGUMENT IS A SEMAPHORE 02960000
000534 5830 2000 00000 412 L 3,SMVAL . GET THE VALUE 02970000
000538 5A30 1924 00E58 413 A 3,=F'1' . ADD ONE 02980000
00053C 5030 2000 00000 414 ST 3,SMVAL . AND STORE IT BACK 02990000
000540 47D0 1014 00548 415 BNP XVWAKEUP . IF <=0, SOMEONE'S WAITING 03000000
000544 8200 04D8 004D8 416 LPSW RETURN . ELSE RETURN 03010000
000548 5840 2004 00004 417 XVWAKEUP L 4,SMPTR . GET THE FIRST OF THE GUYS 03020000
418 DROP 15 03030000
R:4 00000 419 USING PCB,4 03040000
00054C D203 2004 4030 00004 00030 420 MVC SMPTR,PCBNSW . REMEMBER THE REST 03050000
000552 9200 4019 00019 421 MVI PCBBLOKT,X'00' . WE'RE NO LONGER BLOCKING HIM 03060000
000556 95FF 0278 00278 422 CLI NEXTTRYM,X'FF' . IS NEXT TRY MODIFIED? 03070000
00055A 4780 1032 00566 423 BE XVRET . IF SO, WELL OK 03080000
00055E 5040 0274 00274 424 ST 4,NEXTTRY ELSE MODIFY NEXTTRY 03090000
000562 92FF 0278 00278 425 MVI NEXTTRYM,X'FF' . AND SAY SO 03100000
000566 8200 04D8 004D8 426 XVRET LPSW RETURN . GET BACK 03110000
427 DROP 2,4 03120000
1 Sample Operating System Version 2.00 Page 14
Active Usings: PROGRAM,R0 PROGRAM+X'534',R1 SA,R14
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 429 *********************************************************************** 03140000
430 * * 03150000
431 * XPER ROUTINE (TRAFFIC CONTROLLER) * 03160000
432 * * 03170000
433 * FUNCTION: TO IMPLEMENT MULTIPROGRAMMING * 03180000
434 * DATABASES: NONE * 03190000
435 * ROUTINES USED: NONE * 03200000
436 * PROCEDURE: STARTING WITH NEXTTRY, SEARCH FOR PROCESS ON ALL * 03210000
437 * PCB CHAIN NOT BLOCKED OR STOPPED; IF FOUND, USE AS * 03220000
438 * NEW RUNNING, FOR 50 MS OF TIME AND RETURN. ELSE, * 03230000
439 * ENTER WAIT STATE WITH INTERRUPTS ON, AND TRY TO * 03240000
440 * SCHEDULE AGAIN AFTER INTERRUPT; RETURN. * 03250000
441 * ERROR CHECKS: NONE * 03260000
442 * INTERRUPTS: OFF * 03270000
443 * USER ACCESS: NO * 03280000
444 * * 03290000
445 *********************************************************************** 03300000
0 0056A 447 XPER EQU * . ROUTINE XPER: TRAFFIC SCHEDULER 03320000
00056A 8000 0078 00078 448 SSM IONEW . MASK OFF INTERRUPTS 03330000
00056E 0510 449 BALR 1,0 03340000
R:1 00570 450 USING *,1 03350000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 450 in /mbhfs/sos4k.asm on volume:
000570 58A0 0274 00274 451 L 10,NEXTTRY . START LOOKING AT NEXTTRY 03360000
000574 18BA 452 LR 11,10 . REMEMBER WHICH THAT WAS 03370000
R:A 00000 453 USING PCB,10 03380000
000576 95FF A019 00019 454 GWLOOP CLI PCBBLOKT,X'FF' . IF IT'S BLOCKED 03390000
00057A 4780 1016 00586 455 BE GWINC . IGNORE 03400000
00057E 95FF A018 00018 456 CLI PCBSTOPT,X'FF' . ELSE, IF IT'S NOT STOPPED 03410000
000582 4770 1030 005A0 457 BNE GWRUN . WE CAN RUN IT 03420000
000586 58A0 A010 00010 458 GWINC L 10,PCBNPALL . ELSE, GO TO THE NEXT 03430000
00058A 19AB 459 CR 10,11 . IF WE'VE SEEN ALL, QUIT 03440000
00058C 4770 1006 00576 460 BNE GWLOOP . ELSE TRY AGAIN 03450000
000590 8200 1028 00598 461 LPSW IDLE . SIT AND WAIT 03460000
000598 462 DS 0D 03470000
000598 FE0200000000056A 463 IDLE DC B'11111110',B'00000010',X'0000',X'00',AL3(XPER) 03480000
00005A0 D203 0274 A010 00274 00010 465 GWRUN MVC NEXTTRY,PCBNPALL . GET A NEW NEXTTRY 03500000
0005A6 9200 0278 00278 466 MVI NEXTTRYM,X'00' . NOT MODIFIED 03510000
0005AA 50A0 0270 00270 467 ST 10,RUNNING . GET A NEW RUNNING 03520000
0005AE 41E0 A04C 0004C 468 LA 14,PCBISA 03530000
0005B2 D203 0050 104C 00050 005BC 469 MVC TIMER,QUANTUM . INTERRUPT AFTER 50 MS 03540000
0005B8 8200 04D8 004D8 470 LPSW RETURN . AND GO TO RETURNR 03550000
0005BC 00000F00 471 QUANTUM DC X'00000F00' . QUANTUM OF TIME 03560000
472 DROP 10 03570000
R:F 00000 473 USING PCB,15 03580000
1 Sample Operating System Version 2.00 Page 15
Active Usings: PROGRAM,R0 PROGRAM+X'570',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 475 *********************************************************************** 03600000
476 * * 03610000
477 * XEXC ROUTINE * 03620000
478 * * 03630000
479 * FUNCTION: TO ENTER SMC SECTION * 03640000
480 * DATABASES: NONE * 03650000
481 * ROUTINES USED: NONE * 03660000
482 * PROCEDURE: INCREMENT SMC BYTE IN PCB BY ONE; RETURN. * 03670000
483 * ERROR CHECKS: NONE * 03680000
484 * INTERRUPTS: OFF * 03690000
485 * USER ACCESS: NO * 03700000
486 * * 03710000
487 *********************************************************************** 03720000
0 005C0 489 XEXC EQU * . ROUTINE XEXC: ENTER SMC SECTION 03740000
R:1 005C0 490 USING *,1 03750000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 490 in /mbhfs/sos4k.asm on volume:
0005C0 1B88 491 SR 8,8 03760000
0005C2 4380 F01A 0001A 492 IC 8,PCBINSMC 03770000
0005C6 4188 0001 00001 493 LA 8,1(8) . ADD ONE TO SMC BYTE 03780000
0005CA 4280 F01A 0001A 494 STC 8,PCBINSMC 03790000
0005CE 8200 04D8 004D8 495 LPSW RETURN . AND LEAVE 03800000
0 497 *********************************************************************** 03820000
498 * * 03830000
499 * XCOM ROUTINE * 03840000
500 * * 03850000
501 * FUNCTION: TO LEAVE SMC SECTION * 03860000
502 * DATABASES: NONE * 03870000
503 * ROUTINES USED: XP, XV * 03880000
504 * PROCEDURE: DECREMENT SMC BYTE IN PCB BY ONE; IF NOT ZERO, * 03890000
505 * RETURN. ELSE, CHECK FOR STOP WAITING; IF STOP * 03900000
506 * WAITING, ALLOW STOP AND BLOCK SELF; RETURN. IF NO * 03910000
507 * STOP WAITING, RETURN. * 03920000
508 * ERROR CHECKS: NONE * 03930000
509 * INTERRUPTS: OFF * 03940000
510 * USER ACCESS: NO * 03950000
511 * * 03960000
512 *********************************************************************** 03970000
0 005D2 514 XCOM EQU * . ROUTINE XCOM: LEAVE SMC 03990000
R:1 005D2 515 USING *,1 04000000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 515 in /mbhfs/sos4k.asm on volume:
0005D2 1B88 516 SR 8,8 04010000
0005D4 4380 F01A 0001A 517 IC 8,PCBINSMC 04020000
0005D8 0680 518 BCTR 8,0 . SUBTRACT ONE FROM IN SMC BYTE 04030000
0005DA 4280 F01A 0001A 519 STC 8,PCBINSMC 04040000
0005DE 1288 520 LTR 8,8 . IS IT ZERO? 04050000
0005E0 4770 102A 005FC 521 BNZ XCOMRET . NO, THEN GET BACK, OTHERWISE 04060000
0005E4 9500 F01B 0001B 522 CLI PCBSW,X'00' . IS STOP WAITING? 04070000
0005E8 4780 102A 005FC 523 BE XCOMRET . IF NOT, RETURN 04080000
0005EC 9200 F01B 0001B 524 MVI PCBSW,X'00' . STOPS NOT WAITING AFTER THIS 04090000
0005F0 4120 F034 00034 525 LA 2,PCBSRS . WE'LL "V" THE STOPPER, 04100000
1 Sample Operating System Version 2.00 Page 16
Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
00005F4 0AE5 526 SVC C'V' 04110000
0005F6 4120 F03C 0003C 527 LA 2,PCBSES . AND "P" THE STOPPEE. 04120000
0005FA 0AD7 528 SVC C'P' 04130000
0005FC 8200 04D8 004D8 529 XCOMRET LPSW RETURN . AND HERE (IF EVER) WE RETURN 04140000
1 Sample Operating System Version 2.00 Page 17
Active Usings: PROGRAM,R0 PROGRAM+X'5D2',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 531 *********************************************************************** 04160000
532 * * 04170000
533 * XA ROUTINE * 04180000
534 * XAUTO ROUTINE * 04190000
535 * * 04200000
536 * FUNCTION: TO ALLOCATE MEMORY * 04210000
537 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XAX: * 04220000
538 * XAX DS 0D * 04230000
539 * XAXSIZE DS F SIZE OF BLOCK TO BE ALLOCATED * 04240000
540 * XAXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 04250000
541 * XAXALGN DS F ALIGNMENT OF BLOCK * 04260000
542 * ROUTINES USED: XEXC, XCOM, XP, XV, XB * 04270000
543 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE FOR LARGE * 04280000
544 * ENOUGH MEMORY BLOCK; ALIGN BOUNDARY; USE XB TO * 04290000
545 * CHAIN ANY LEFTOVER BLOCKS TO FREE STORAGE LIST; * 04300000
546 * PLACE ADDRESS OF ALLOCATED BLOCK IN XAXADDR; UNLOCK* 04310000
547 * FSB SEMAPHORE; RETURN. IF CAN'T SATISFY REQUEST, * 04320000
548 * UNLOCK FSB SEMAPHORE, APPLY XP ROUTINE TO MEMORY * 04330000
549 * SEMAPHORE, BLOCKING PROCESS RUNNING UNTIL MEMORY * 04340000
550 * FREED; THEN UNBLOCK; TRY TO SATISFY REQUEST AGAIN. * 04350000
551 * ERROR CHECKS: NONE * 04360000
552 * INTERRUPTS: ON * 04370000
553 * USER ACCESS: NO * 04380000
554 * * 04390000
555 *********************************************************************** 04400000
0 00600 557 XA EQU * . THE XA ROUTINE, TO ALLOCATE 04420000
R:1 00600 558 USING *,1 04430000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 558 in /mbhfs/sos4k.asm on volume:
000600 4100 0001 00001 559 LA 0,1 . SET REGISTER ZERO TO ONE TO 04440000
000604 47F0 100E 0060E 560 B XACOM . INDICATE C'A' CALL 04450000
00608 561 XAUTO EQU * . AUTO STORAGE ENTRY POINT 04460000
R:1 00608 562 USING *,1 04470000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 562 in /mbhfs/sos4k.asm on volume:
000608 1B00 563 SR 0,0 . REG0=0 INDICATES C'E' CALL 04480000
00060A 5810 1854 00E5C 564 L 1,=A(XA) . RESET BASE REGISTER PROPERLY 04490000
R:1 00600 565 USING XA,1 04500000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 565 in /mbhfs/sos4k.asm on volume:
00060E 0A5A 566 XACOM SVC C'!' . ENTER SMC 04510000
000610 1872 567 LR 7,2 04520000
R:7 00000 568 USING XAX,7 . ARGUMENT LIST 04530000
000612 5860 7000 00000 569 L 6,XAXSIZE . GET THE SIZE REQUESTED 04540000
000616 4120 0184 00184 570 XATOP LA 2,FSBSEM . LOCK THE FSB SEMAPHORE 04550000
00061A 0AD7 571 SVC C'P' . 04560000
00061C 4150 0180 00180 572 LA 5,FSBPTR . START LOOKING DOWN 04570000
000620 5840 0180 00180 573 L 4,FSBPTR . THE FREE STORAGE LIST 04580000
000624 5880 7008 00008 574 L 8,XAXALGN . WE WOULD HAVE TO START AT WITH 04590000
000628 0680 575 BCTR 8,0 . THIS CONSTANT TO FIND ALIGNMENT 04600000
R:4 00000 576 USING FSB,4 04610000
00062A 1244 577 XALOOP LTR 4,4 . IF AT THE END 04620000
00062C 4780 1056 00656 578 BZ XAWAIT . WAIT UNTIL A "FREE" OP 04630000
000630 18D4 579 LR 13,4 . FIND THE LOCATION 04640000
1 Sample Operating System Version 2.00 Page 18
Active Usings: PROGRAM,R0 XA,R1 FSB,R4 XAX,R7 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000632 06D0 580 BCTR 13,0 . IN THIS BLOCK WITH THIS 04650000
000634 16D8 581 OR 13,8 . ALIGNMENT 04660000
000636 41DD 0001 00001 582 LA 13,1(13) . THAT'S IT 04670000
00063A 189D 583 LR 9,13 . AND NOW GET IN REG 9 04680000
00063C 1B94 584 SR 9,4 . WHAT IS WASTED AT THE FRONT 04690000
00063E 5830 4004 00004 585 L 3,FSBSIZE . GET SIZE MINUS WASTE AT 04700000
000642 1B39 586 SR 3,9 . FRONT, LEAVING EFFECTIVE SIZE 04710000
000644 1963 587 CR 6,3 . IS IT ENOUGH? 04720000
000646 47D0 1062 00662 588 BNP XAFOUND . EUREKA! 04730000
00064A 4150 4000 00000 589 LA 5,FSBNEXT . OH WELL, GET THE NEXT FREE 04740000
00064E 5840 4000 00000 590 L 4,FSBNEXT . STORAGE BLOCK ON THE CHAIN 04750000
000652 47F0 102A 0062A 591 B XALOOP . BETTER LUCK NEXT TIME 04760000
000656 0AE5 592 XAWAIT SVC C'V' . NEED TO WAIT 04770000
000658 4120 018C 0018C 593 LA 2,MEMORY . SO WE LET OTHER PEOPLE GET IN 04780000
00065C 0AD7 594 SVC C'P' . SO THEY'LL WAKE US UP 04790000
00065E 47F0 1016 00616 595 B XATOP . AND THEN WE'LL TRY AGAIN 04800000
000662 50D0 7004 00004 596 XAFOUND ST 13,XAXADDR . WE'VE NOW GOT THE ADDRESS 04810000
000666 D203 5000 4000 00000 00000 597 MVC 0(4,5),FSBNEXT . UNLINK THE BLOCK OUT 04820000
00066C 58C0 4004 00004 598 L 12,FSBSIZE . GET THE WHOLE BLOCK SIZE 04830000
000670 4120 E048 00048 599 LA 2,SATEMP . START MAKING UP ARG LISTS 04840000
R:2 00000 600 USING XBX,2 . FOR THE XB ROUTINE 04850000
000674 18AD 601 LR 10,13 . THE STARTING LOCATION 04860000
000676 1BA4 602 SR 10,4 . MINUS THE START OF THE BLOCK 04870000
000678 4780 1086 00686 603 BZ XANF . IF NONE WASTED AT THE FRONT, SKIP 04880000
00067C 5040 2004 00004 604 ST 4,XBXADDR . ELSE FREE, STARTING THERE 04890000
000680 50A0 2000 00000 605 ST 10,XBXSIZE . UP TO THE BEGINNING OF THE 04900000
000684 0AC2 606 SVC C'B' . ALLOCATION; INSERT IT IN THE CHAIN 04910000
000686 18BD 607 XANF LR 11,13 . THE STARTING ADDR PLUS THE SIZE 04920000
000688 1AB6 608 AR 11,6 . GIVES THE FIRST UNUSED ADDR 04930000
00068A 1BCA 609 SR 12,10 . MINUS THE WASTE AT FRONT, 04940000
00068C 1BC6 610 SR 12,6 . MINUS THE PART ALLOCATED. IF 04950000
00068E 4780 109C 0069C 611 BZ XARETURN . NONE LEFT OVER, GOOD 04960000
000692 50B0 2004 00004 612 ST 11,XBXADDR . ELSE STORE ADDRESS AND 04970000
000696 50C0 2000 00000 613 ST 12,XBXSIZE . SIZE, AND LINK ONTO 04980000
00069A 0AC2 614 SVC C'B' . FREE STORAGE LIST 04990000
615 DROP 2 05000000
00069C 4120 0184 00184 616 XARETURN LA 2,FSBSEM . WE ARE DONE, SO NOW SOMEONE 05010000
0006A0 0AE5 617 SVC C'V' . ELSE CAN COME IN 05020000
0006A2 1200 618 LTR 0,0 . IS THIS FOR AUTOMATIC STORAGE? 05030000
0006A4 4770 10B0 006B0 619 BNZ XABACK . IF NOT, RETURN NOW 05040000
0006A8 5060 F044 00044 620 ST 6,PCBASIZE . OTHERWISE STORE SIZE AND 05050000
0006AC 50D0 F048 00048 621 ST 13,PCBAADDR . ADDRESS OF AUTOMATIC STORAGE 05060000
0006B0 0A6B 622 XABACK SVC C',' . LEAVE SMC SECTION 05070000
0006B2 8200 04D8 004D8 623 LPSW RETURN . GET BACK JOJO 05080000
624 DROP 4,7 05090000
1 Sample Operating System Version 2.00 Page 19
Active Usings: PROGRAM,R0 XA,R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 626 *********************************************************************** 05110000
627 * * 05120000
628 * XF ROUTINE * 05130000
629 * * 05140000
630 * FUNCTION: TO FREE MEMORY * 05150000
631 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XFX: * 05160000
632 * XFX DS 0D * 05170000
633 * XFXSIZE DS F SIZE OF BLOCK TO BE FREED * 05180000
634 * XFXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05190000
635 * ROUTINES USED: XEXC, XP, XV, XB, XCOM * 05200000
636 * PROCEDURE: LOCK FSB SEMAPHORE; SEARCH FREE STORAGE LIST TO * 05210000
637 * FIND IF ANY FREE BLOCK CONTIGUOUSLY FOLLOWS OR * 05220000
638 * PRECEDES BLOCK TO BE FREED; IF THERE IS ANY, * 05230000
639 * COMPACT THEM INTO A SINGLE BLOCK OF COMBINED SIZE; * 05240000
640 * USE XB TO CHAIN COMPACTED BLOCK ONTO FREE STORAGE * 05250000
641 * LIST; WAKEUP ALL PROCESSES WAITING ON MEMORY * 05260000
642 * SEMAPHORE; UNLOCK FSB SEMAPHORE; RETURN * 05270000
643 * ERROR CHECKS: NONE * 05280000
644 * INTERRUPTS: ON * 05290000
645 * USER ACCESS: NO * 05300000
646 * * 05310000
647 *********************************************************************** 05320000
0 006B6 649 XF EQU * . THE XF ROUTINE, TO FREE STORAGE 05340000
R:1 006B6 650 USING *,1 05350000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 650 in /mbhfs/sos4k.asm on volume:
0006B6 0A5A 651 SVC C'!' . ENTER SMC SECTION 05360000
0006B8 1872 652 LR 7,2 05370000
R:7 00000 653 USING XFX,7 . THE ARGUMENT LIST 05380000
0006BA 5830 7000 00000 654 L 3,XFXSIZE . GET THE SIZE 05390000
0006BE 5840 7004 00004 655 L 4,XFXADDR . AND THE ADDRESS 05400000
0006C2 1853 656 LR 5,3 . GET THE ADDRESS OF THE END OF THE 05410000
0006C4 1A54 657 AR 5,4 . BLOCK TO BE FREED 05420000
0006C6 4120 0184 00184 658 LA 2,FSBSEM . LOCK FSBSEM 05430000
0006CA 0AD7 659 SVC C'P' 05440000
0006CC 4180 0180 00180 660 LA 8,FSBPTR . START LOOKING DOWN THE FREE 05450000
0006D0 5860 0180 00180 661 L 6,FSBPTR . STORAGE LIST, FOR COMPACTION 05460000
R:6 00000 662 USING FSB,6 05470000
0006D4 1266 663 XFLOOP LTR 6,6 . ARE WE THROUGH? 05480000
0006D6 4780 105E 00714 664 BZ XFLINK . IF SO, JUST ADD IT ON 05490000
0006DA 5890 6000 00000 665 L 9,FSBNEXT . IF NOT. GET THE NEXT PTR 05500000
0006DE 1965 666 CR 6,5 . IS THIS BLOCK RIGHT AFTER OURS? 05510000
0006E0 4770 103A 006F0 667 BNE XFTHEN . IF NOT, OK. BUT IF IT IS, 05520000
0006E4 5098 0000 00000 668 ST 9,0(8) . WE CAN COMPACT, SO UNCHAIN IT 05530000
0006E8 5A30 6004 00004 669 A 3,FSBSIZE . AND REMEMBER THE NEW SIZE 05540000
0006EC 47F0 1050 00706 670 B XFBACKUP . AND ON TO THE NEXT 05550000
0006F0 18A6 671 XFTHEN LR 10,6 . MAYBE IT'S RIGHT BEFORE OURS 05560000
0006F2 5AA0 6004 00004 672 A 10,FSBSIZE . GET ENDING ADDRESS OF FREE BLOCK 05570000
0006F6 19A4 673 CR 10,4 . IS IT RIGHT BEFORE OURS? 05580000
0006F8 4770 1052 00708 674 BNE XFINC . OH FUDGE! NO! 05590000
0006FC 5098 0000 00000 675 ST 9,0(8) . IF SO, UNLINK IT 05600000
000700 1846 676 LR 4,6 . GET THE NEW BEGINNING LOCATION 05610000
000702 5A30 6004 00004 677 A 3,FSBSIZE . AND NEW SIZE OF FREE BLOCK 05620000
000706 1868 678 XFBACKUP LR 6,8 . BACK UP ONE FSB 05630000
1 Sample Operating System Version 2.00 Page 20
Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 FSB,R6 XFX,R7 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000708 4180 6000 00000 679 XFINC LA 8,FSBNEXT . ON TO THE NEXT FSB 05640000
00070C 5860 6000 00000 680 L 6,FSBNEXT 05650000
000710 47F0 101E 006D4 681 B XFLOOP . TRY, TRY AGAIN 05660000
000714 4120 E048 00048 682 XFLINK LA 2,SATEMP . START TO CALL XB 05670000
R:2 00000 683 USING XBX,2 05680000
000718 5030 2000 00000 684 ST 3,XBXSIZE . STORE SIZE 05690000
00071C 5040 2004 00004 685 ST 4,XBXADDR . AND ADDRESS 05700000
000720 0AC2 686 SVC C'B' . LINK IT ONTO THE FSB CHAIN 05710000
R:2 00000 687 USING SM,2 05720000
000722 4120 018C 0018C 688 LA 2,MEMORY . GET VALUE OF MEMORY SEMAPHORE 05730000
000726 41B0 0001 00001 689 LA 11,1(0,0) . SUBTRACT FROM ONE, IT'S A HANDLE 05740000
00072A 5BB0 2000 00000 690 S 11,SMVAL . ON THE # OF PEOPLE WAITING 05750000
691 DROP 2 05760000
00072E 46B0 1088 0073E 692 XFVLOOP BCT 11,XFVDO . LOOP IF ANYONE ELSE IS WAITING 05770000
000732 4120 0184 00184 693 LA 2,FSBSEM . WE'RE THROUGH, SO 05780000
000736 0AE5 694 SVC C'V' . UNBLOCK FSBSEM 05790000
000738 0A6B 695 SVC C',' . LEAVE SMC 05800000
00073A 8200 04D8 004D8 696 LPSW RETURN . RETURN 05810000
00073E 0AE5 697 XFVDO SVC C'V' . WAKE SOMEONE UP 05820000
000740 47F0 1078 0072E 698 B XFVLOOP . TRY AGAIN FOR ANOTHER 05830000
699 DROP 6,7 05840000
1 Sample Operating System Version 2.00 Page 21
Active Usings: PROGRAM,R0 PROGRAM+X'6B6',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 701 *********************************************************************** 05860000
702 * * 05870000
703 * XB ROUTINE * 05880000
704 * * 05890000
705 * FUNCTION: TO CHAIN A STORAGE BLOCK ONTO FREE STORAGE LIST * 05900000
706 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XBX: * 05910000
707 * XBX DS 0D * 05920000
708 * XBXSIZE DS F SIZE OF BLOCK * 05930000
709 * XBXADDR DS A ADDRESS OF FIRST BYTE OF BLOCK* 05940000
710 * ROUTINES USED: NONE * 05950000
711 * PROCEDURE: SEARCH FREE STORAGE LIST TO FIND WHERE TO INSERT * 05960000
712 * FREE BLOCK IN ORDER OF INCREASING SIZE; FORMAT * 05970000
713 * BLOCK LIKE AN FSB; INSERT; RETURN. * 05980000
714 * ERROR CHECKS: NONE * 05990000
715 * INTERRUPTS: OFF * 06000000
716 * USER ACCESS: NO * 06010000
717 * COMMENTS: SINCE XB ROUTINE ONLY CALLED BY XA AND XF, FSB * 06020000
718 * SEMAPHORE IS ALREADY LOCKED. * 06030000
719 * * 06040000
720 *********************************************************************** 06050000
0 00744 722 XB EQU * 06070000
R:1 00744 723 USING *,1 06080000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 723 in /mbhfs/sos4k.asm on volume:
R:2 00000 724 USING XBX,2 . ARGUMENT LIST 06090000
000744 5830 2000 00000 725 L 3,XBXSIZE . GET THE SIZE 06100000
000748 5840 2004 00004 726 L 4,XBXADDR . AND THE ADDRESS 06110000
00074C 4180 0180 00180 727 LA 8,FSBPTR . START LOOKING DOWN THE CHAIN 06120000
000750 5860 0180 00180 728 L 6,FSBPTR 06130000
000754 1266 729 LTR 6,6 . IF ZERO POINTER, WE ARE AT 06140000
000756 4780 102C 00770 730 BZ XBINSERT . END OF CHAIN ALREADY 06150000
R:6 00000 731 USING FSB,6 06160000
00075A 5930 6004 00004 732 XBLOOP C 3,FSBSIZE . IF THE SIZE OF OURS IS LESS, 06170000
00075E 47D0 102C 00770 733 BNP XBINSERT . TIME TO INSERT 06180000
000762 4180 6000 00000 734 LA 8,FSBNEXT . ELSE GO ON TO THE NEXT 06190000
000766 5860 6000 00000 735 L 6,FSBNEXT 06200000
00076A 1266 736 LTR 6,6 . IF NOT ALREADY THROUGH 06210000
00076C 4770 1016 0075A 737 BNZ XBLOOP . BRANCH BACK 06220000
000770 5048 0000 00000 738 XBINSERT ST 4,0(8) . NOW, LINK OURS ON 06230000
739 DROP 6 06240000
R:4 00000 740 USING FSB,4 06250000
000774 5060 4000 00000 741 ST 6,FSBNEXT . MAKE OURS POINT TO THE NEXT 06260000
000778 5030 4004 00004 742 ST 3,FSBSIZE . WITH THE RIGHT SIZE 06270000
00077C 8200 04D8 004D8 743 LPSW RETURN . AND RETURN 06280000
744 DROP 2,4 06290000
1 Sample Operating System Version 2.00 Page 22
Active Usings: PROGRAM,R0 PROGRAM+X'744',R1 SA,R14 PCB,R15
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 746 *********************************************************************** 06310000
747 * * 06320000
748 * XC ROUTINE * 06330000
749 * * 06340000
750 * FUNCTION: TO CREATE A PROCESS * 06350000
751 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XCX: * 06360000
752 * XCX DS 0D * 06370000
753 * XCXNAME DS CL8 NAME OF PROCESS TO BE CREATED * 06380000
754 * ROUTINES USED: XEXC, XCOM, XN, XA, XI, XQUE * 06390000
755 * PROCEDURE: USE XA TO ALLOCATE NEW PCB; PLACE XCXNAME IN PCB; * 06400000
756 * INITIALIZE SEMAPHORES; STOP; BLOCK; OUT OF SMC; * 06410000
757 * CALL XI TO LINK PCB ONTO PCB CHAINS; RETURN. * 06420000
758 * ERROR CHECKS: IF NAME ALREADY USED IN THIS GROUP, XQUE ENTERED. * 06430000
759 * INTERRUPTS: ON * 06440000
760 * USER ACCESS: YES * 06450000
761 * * 06460000
762 *********************************************************************** 06470000
0 00780 764 XC EQU * . THE XC ROUTINE: CREATE A PROCESS 06490000
R:1 00780 765 USING *,1 06500000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 765 in /mbhfs/sos4k.asm on volume:
000780 1872 766 LR 7,2 06510000
R:7 00000 767 USING XCX,7 . ARGUMENT LIST 06520000
000782 4120 E048 00048 768 LA 2,SATEMP . READY TO MAKE CALLS OUT 06530000
R:2 00000 769 USING XNX,2 . A XN-LIKE ARGUMENT LIST 06540000
000786 D207 2000 7000 00000 00000 770 MVC XNXNAME,XCXNAME . GET THE NAME 06550000
00078C 0AD5 771 SVC C'N' . AND CALL TO FIND THE PCB 06560000
00078E D503 2008 16E0 00008 00E60 772 CLC XNXADDR,=A(0) . SEE IF THERE 06570000
000794 4770 1044 007C4 773 BNE XCERR . IF ALREADY EXISTS, BAD 06580000
000798 0A5A 774 SVC C'!' . ENTER SMC SECTION 06590000
775 DROP 2 06600000
R:2 00000 776 USING XAX,2 . READY TO CALL XA 06610000
00079A D203 2000 16E4 00000 00E64 777 MVC XAXSIZE,=A(LENPCB) . WE KNOW THE SIZE 06620000
0007A0 D203 2008 16E8 00008 00E68 778 MVC XAXALGN,=F'8' . AND THE ALIGNMENT 06630000
0007A6 0AC1 779 SVC C'A' . SO CALL 06640000
0007A8 5820 2004 00004 780 L 2,XAXADDR . FIND THE ADDRESS 06650000
781 DROP 2,15 06660000
R:2 00000 782 USING PCB,2 . FILL IN THE PCB 06670000
0007AC D207 2000 7000 00000 00000 783 MVC PCBNAME,XCXNAME . GIVE IT A NAME 06680000
0007B2 92FF 2018 00018 784 MVI PCBSTOPT,X'FF' . IT'S STOPPED 06690000
0007B6 D232 2019 1B01 00019 01281 785 MVC PCBBLOKT(PCBISA-PCBBLOKT),TEMPLATE+1 INITIALIZE PCB 06700000
0007BC 0AC9 786 SVC C'I' . THREAD IT ON 06710000
0007BE 0A6B 787 SVC C',' . LEAVE SMC SECTION 06720000
0007C0 8200 04D8 004D8 788 LPSW RETURN . AND RETURN 06730000
0007C4 0A6F 789 XCERR SVC C'?' . IF ALREADY EXISTS,KERROR 06740000
790 DROP 2,7 06750000
1 Sample Operating System Version 2.00 Page 23
Active Usings: PROGRAM,R0 PROGRAM+X'780',R1 SA,R14
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0 792 *********************************************************************** 06770000
793 * * 06780000
794 * XD ROUTINE * 06790000
795 * * 06800000
796 * FUNCTION: TO DESTROY A PROCESS * 06810000
797 * DATABASES: UPON ENTRY, REGISTER 2 CONTAINS ADDRESS XDX: * 06820000
798 * XDX DS 0D * 06830000
799 * XDXNAME DS CL8 NAME OF PROCESS TO BE DESTROYED* 06840000
800 * ROUTINES USED: XEXC, XJ, XS, XN, XF, XCOM, XQUE * 06850000
801 * PROCEDURE: USE XN TO FIND PCB FOR PROCESS TO BE DESTROYED; * 06860000
802 * USE XJ TO UNLOCK PCB FROM PROCESS CHAINS; IF ANY * 06870000
803 * MESSAGES FOR THIS PROCESS, FREE STORAGE FOR THEM; * 06880000
804 * IF THERE IS ANY AUTOMATIC STORAGE, FREE IT; * 06890000
805 * FREE STORAGE FOR PCB; RETURN. * 06900000
806 * ERROR CHECKS: IF NAME DOESN'T EXIST OR PROCESS NOT STOPPED, * 06910000
807 * XQUE ENTERED. * 06920000
808 * INTERRUPTS: ON * 06930000
809 * USER ACCESS: YES * 06940000
810 * * 06950000
811 *********************************************************************** 06960000
0 007C6 813 XD EQU * . XD ROUTINE: DESTROY A PROCESS 06980000
R:1 007C6 814 USING *,1 06990000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131
** ASMA435I Record 814 in /mbhfs/sos4k.asm on volume:
0007C6 1872 815 LR 7,2 07000000
R:7 00000 816 USING XDX,7 . ARG LIST 07010000
0007C8 4120 E048 00048 817 LA 2,SATEMP . READY TO CALL OUT 07020000
R:2 00000 818 USING XNX,2 . WILL CALL XN 07030000
0007CC D207 2000 7000 00000 00000 819 MVC XNXNAME,XDXNAME . GET NAME 07040000
0007D2 0AD5 820 SVC C'N' . AND CALL 07050000
0007D4 5820 2008 00008 821 L 2,XNXADDR . GET ADDRESS 07060000
822 DROP 2 07070000
0007D8 1222 823 LTR 2,2 . IF ADDRESS IS NULL, 07080000
0007DA 4780 107A 00840 824 BZ XDERR . IT'S AN ERROR 07090000
R:2 00000 825 USING PCB,2 07100000
0007DE 95FF 2018 00018 826 CLI PCBSTOPT,X'FF' . IF NOT STOPPED 07110000
0007E2 4770 107A 00840 827 BNE XDERR . IT'S AN ERROR 07120000
0007E6 0A5A 828 SVC C'!' . ENTER SMC SECTION 07130000
829 DROP 2 07140000
R:F 00000 830 USING PCB,15 07150000
0007E8 0AD1 831 SVC C'J' . ELSE UNTHREAD THE ENTRY 07160000
0007EA 1882 832 LR 8,2 . REMEMBER THE PCB POINTER 07170000
0007EC 4120 E048 00048 833 LA 2,SATEMP . READY TO CALL OUT AGAIN 07180000
R:8 00000 834 USING PCB,8 07190000
** ASMA300W USING overridden by a prior active USING on statement number 830
** ASMA435I Record 834 in /mbhfs/sos4k.asm on volume:
835 DROP 15 07200000
0007F0 5890 802C 0002C 836 L 9,PCBFM . GET FIRST MESSAGE 07210000
0007F4 1299 837 XDLOOP LTR 9,9 . ANY MORE MESSAGES? 07220000
0007F6 4780 1054 0081A 838 BZ XDCHECK . IF NOT, FINISH UP 07230000
R:9 00000 839 USING MSG,9 07240000
0007FA 58A0 9004 00004 840 L 10,MSGNEXT . ELSE REMEMBER NEXT 07250000
0007FE 58B0 9008 00008 841 L 11,MSGSIZE . GET THE SIZE 07260000
000802 41BB 000F 0000F 842 LA 11,15(11) . AND MAKE IT SOME NUMBER 07270000
1 Sample Operating System Version 2.00 Page 24
Active Usings: PROGRAM,R0 PROGRAM+X'7C6',R1 XDX,R7 PCB,R8 MSG,R9 SA,R14
0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2016/08/29 08.42
0000806 54B0 16A6 00E6C 843 N 11,=F'-8' . OF DOUBLEWORDS 07280000
R:2 00000 844 USING XFX,2 07290000
00080A 5090 2004 00004 845 ST 9,XFXADDR . FREE THE LOCATION 07300000
00080E 50B0 2000 00000 846 ST 11,XFXSIZE . THE NUMBER OF WORDS 07310000
000812 0AC6 847 SVC C'F' . DO IT 07320000
000814 189A 848 LR 9,10 . ON TO THE NEXT 07330000
000816 47F0 102E 007F4 849 B XDLOOP . GET THE NEXT MESSAGE 07340000
00081A D503 8048 169A 00048 00E60 850 XDCHECK CLC PCBAADDR(4),=A(0) . HAS AUTOMATIC STORAGE BEEN 07350000
000820 4780 1068 0082E 851 BE XDTHEN . ALLOCATED? IF NOT, GO FINISH UP 07360000
000824 4120 8044 00044 852 LA 2,PCBASIZE . SET UP THE ARGUMENT LIST 07370000
000828 0AC6 853 SVC C'F' . FREE IT 07380000
00082A 4120 E048 00048 854 LA 2,SATEMP . RESET REGISTER 2 07390000
00082E 5080 2004 00004 855 XDTHEN ST 8,XFXADDR . READY TO FREE THE PCB 07400000
000832 D203 2000 169E 00000 00E64 856 MVC XFXSIZE,=A(LENPCB) . THE SIZE 07410000
000838 0AC6 857 SVC C'F' . FREE IT 07420000
00083A 0A6B 858 SVC C',' . LEAVE SMC 07430000
00083C 8200 04D8 004D8 859 LPSW RETURN . AND RETURN 07440000
000840 0A6F 860 XDERR SVC C'?' . IF PROCESS DOES NOT EXIST 07450000
861 DROP 2,7,8,9 07460000
R:F 00000 862 USING PCB,15 07470000
-
864 *********************************************************************** 07490000
865 * * 07500000
866 * XH ROUTINE * 07510000
867 * * 07520000
868 * FUNCTION: TO HALT A JOB * 07530000
869 * DATABASES: NONE * 07540000
870 * ROUTINES USED: XS, XR * 07550000
871 * PROCEDURE: SEND MESSAGE TO SUPERVISOR PROCESS FOR THIS JOB * 07560000
872 * INDICATING NORMAL TERMINATION; TRIES TO READ * 07570000
873 * MESSAGES FOREVER LOOPING; BLOCKS ITSELF, THEREBY * 07580000
874 * NEVER RETURNING. * 07590000
875 * ERROR CHECKS: NONE * 07600000
876 * INTERRUPTS: ON * 07610000
877 * USER ACCESS: YES * 07620000
878 * COMMENTS: USER NORMALLY USES THIS ROUTINE TO END A JOB. * 07630000
879 * * 07640000
880 *********************************************************************** 07650000
0 00842 882 XH EQU * . THE XH ROUTINE: HALT A JOB 07670000
R:1 00842 883 USING *,1 07680000
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 131