{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMBDTS863)}} ====== PMBDTS863 ====== (George Source) **Macros used:** [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:CONSOLE|CONSOLE]], [[george:macro:ENDLIST|ENDLIST]], [[george:macro:PMCORES|PMCORES]], [[george:macro:PMESSAGE|PMESSAGE]], [[george:macro:SEGENTRY|SEGENTRY]] 22FL ...#OPT K0PMBDTS=0 22^= ...#LIS K0PMBDTS>K0POST>K0ALLGEO 23DW ...# 23YG ...#SEG PMBDTS84 [KAREL KOSKUBA - DIAG 24D6 ...# 24XQ ...# THIS SEGMENT PRINTS THE BASIC DEVICE TABLE 25CB ...# AND THE DEVICE LISTS 25X2 ...# 27*W 8HPMBDTS 27TG ...# 28*6 ...# ENTRY POINT TABLE 28SQ ...# 29#B ... SEGENTRY K1PMBDTS,XK1PMBDTS 29S2 ...# 2=3S ...TEXT0 24HPERIPHERAL INCIDENT AREA 2=?L ...TEXT1 24HTHE BASIC DEVICE TABLE. 2=R= ...TEXT2 12HDEVICE LISTS 2?=W ...TEXT3 12HBDTL IS ZERO [ ADD 4 TO BDTL = BDTP 2*9B WORD1 12HINVALID BDTL 2*P2 WORD2 24HENDLIST POINTER INVALID 2B8L WORD3 +0 2BN= 20HDEVICE LIST TOO LONG 2C7W THINDS 24H1ST 2ND 3RD 4TH 5TH 6TH 2CMG TYPE 16H DEVICE TYPE 000 2D76 Z 16H0 TAPE READER 2DLQ 16H1 TAPE PUNCH 2F6B 16H2 LINE PRINTER 2FL2 16H3 CARD READER 2G5L 16H4 CARD PUNCH 2GK= 16H5 MAGNETIC TAPE 2H4W 16H6 EDS8 2HJG 16H7 MCF (TYPE 7) 2J46 16H8 DATA DISC FILE 2JHQ 16H9 DRUM (TYPE 9) 2K3B 16H: UNIPLEXOR 2KH2 16H; MULTIPLEXOR 2L2L 16H< CASSETTE TAPE 2LG= 16H= FIXED DISC 2L^W 16H( 7901/7903 2MFG 16H) HI SPEED DRUM 2M^6 ... 16H* EDS30/60/200 2NDQ 16H+ IPB (IPC) 2NYB 16H_ CONSOLE T/W 2PD2 ...XK81 +0 [HOLDS THE SIZE OF PIA TO BE PRINTED 2QC= YLIST +0 2QWW +K51 2RBG +K52 2RW6 +K53 2S*Q +K54 2STB +K55 2T*2 +K56 2TSL +K57 2W#= YYLIST [ TO ALLOW THE LIST TO BE INCREASED WITHOUT ALTERUNG CODE 2Y=Q QPPW +0 2YQB ...SNA +0 2^=2 ...#GAP 13 329= STERIX 4H**** 32NW YBLNO +0 338G YCOLNO +0 33N6 YLINK +0 347Q ...# 34MB ...# 3572 ...# ROUTINE TO FORMAT DEVICE LIST PRINTING 35LL ...# 366= ...# 36KW ...# ON ENTRY X1 LINE NO. TO BE PRINTED RELATIVE TO CURRENT BASE 375G ...# 37K6 ...# X2 CURRENT COLUMN NO. 384Q ...# 38JB ...# ON EXIT X2 HAS BEEN UPDATED 3942 ...# 39HL ...# X1 IS INTACT 3=3= ...# 3=GW ...# ALL OTHER ACCS HAVE BEEN CORRUPTED 3?2G ...# 3?G6 ...# 3?^Q ...XCHK SMO FXPM1 3#FB ... STO 7 YLINK 3#^2 ... SMO FXPM1 3*DL ... LDX 3 SNA(2) 6H^W LDN 4 K53 6JFG BXGE 1 4,XCHK5 [J IF PAST K53 6J^6 LDX 5 JCTWREC(1) 6KDQ BXE 3 JCTWPTR,XCHK2 [J IF CONSOLE T/W 6KYB LDX 5 JLPREC(1) 6L88 ... SMO FXPMDR 6LD2 BXE 3 JLPPTR,XCHK2 [J IF LP USED BY PM 6MWW LDX 5 JGEOREC(1) 6NBG BXE 3 JGEOPTR,XCHK2 [J IF GEORGE EDS FILE 6ND9 ... SMO FXPMDR 6NFY ... LDX 5 JSCFREC(1) 6NHM ... SMO FXPMDR 6NKB ... BXE 3 JSCFPTR,XCHK2 [J IF SCF DEVICE 6NM5 ... SMO FXPMDR 6NNS ... LDX 5 JMTREC(1) 6NQH ... SMO FXPMDR 6NS= ... BXE 3 JMTPTR,XCHK2 [J IF MT USED BY PM 6NW6 XCHK1 ADX 3 1 6P*Q LDX 5 0(3) [GET WORD TO PRINT 6PTB XCHK2 LDN 3 6 6Q7R ...XCHKS SMO FXPM1 6QG8 ... BXE 1 TLS(3),XCHK3 [COMPARE LINE NO AGAINST SLIST ITEM 6QSL BCT 3 XCHKS 6R#= LDN 3 9 6RLM ...XCHKP SMO FXPM1 6R^4 ... BXE 1 TLP(3),XCHK4 [COMPARE LINE NO AGAINST PLIST ITEM 6S?G BCT 3 XCHKP 6SKX ... CALL 7 (JOCT) [DEFAULT IS OCTAL 6SY# ... SMO FXPM1 6T=P ... LDX 7 YLINK 6TK6 ... BUX 2 (7) 6TXH ...XCHK3 CALL 7 (JUP) 6W=2 +1 6WHB ... CALL 7 (JDECS) [DECIMAL N 6WSQ ... SMO FXPM1 6X66 ... LDX 7 YLINK 6XCG ...TLS BUX 2 (7) 6XNW +K50+2 6Y8G +K51+2 6YN6 +K52+7 6^7Q +K52+8 6^MB +K52+9 7272 +K52+10 72DB ...XCHK4 CALL 7 (JDECP) [DECIMAL N.N 72PQ ... SMO FXPM1 7336 ... LDX 7 YLINK 73#G ...TLP BUX 2 (7) 73KW +K50+1 745G +K50+3 74K6 +K50+5 754Q +K51+1 75JB +K51+3 7642 +K51+5 76HL +K53 76T2 ...XCHK5 SMO FXPM1 776B ... LDX 4 SNA+7(2) 77CQ ... SMO FXPM1 77P6 ... SBX 4 SNA(2) 782G BXL 1 4,XCHK1 [J NOT FINISHED THIS LIST 78G6 ... CALL 7 (JUP) 78^Q +9 79FB LDN 5 1 79^2 SLC 5 0(2) [ELSE CLEAR BIT 7=8S ... SMO FXPM1 7=DL ORS 5 QPPW [IN QPPW 7=ND ... SMO FXPM1 7=Y= ERS 5 QPPW 7=YC ... SMO FXPM1 7=YJ ... LDX 7 YLINK 7=YP ... BUX 2 (7) 7=YQ ...XK1PMBDTS [ MAIN ENTRY - ONLY ENTRY 7=YR ... PMESSAGE TEXT0,6,FXPM1 7=YS ... CALL 7 (JPRINT1) 7=YT ... CALL 7 (JUP) [UPDATE JPMOD POINTER BY 2 CHARACTERS 7=YW ... 2 7=YX ... LDX 1 JPTI+64 [X1=THE BASE OF THE PERIPHERAL INCIDE 7=YY ...#UNS ELOGDME 7=Y^ ...#SKI 7=^2 ... LDN 4 K81 [LOAD SIZE OF PIA(K81 IS THE SIZE OF 7=^3 ...#UNS ELOGDME [VARIABLE PIA LENGTH 7=^4 ... LDX 4 ELPIALEN [LOAD SIZE OF PIA TO BE PRINTED 7=^5 ... LDX 5 1 7=^6 ... CALL 7 (JDECN) [CONVERT THE BASE OF PIA INTO DECIMAL 7=^7 ... CALL 7 (JUP) [UPDATE JPMOD POINTER BY 6 CHARACTERS 7=^8 ... 6 7=^9 ...NEXTWORD 7=^= ... LDX 5 0(1) [X5=THE CONTENTS OF FIRST/NEXT ENTRY 7=^? ... ADN 1 1 [INCREMENT X1 TO POINT TO NEXT ENTRY 7=^# ... CALL 7 (JOCT) [CONVERT THE CONTENT OF ENTRY INTO OC 7=^* ... CALL 7 (JUP) [UPDATE THE JPMOD POINTER BY 2 CHARAC 7=^B ... 2 7=^C ... CALL 7 (JDECP) [CONVERT THE CONTENTS OF ENTRY INTO D 7=^D ... CALL 7 (JPRINT1) [PRINT ONE LINE OF BUFFER 7=^F ... CALL 7 (JUP) 7=^G ... 15 7=^H ... BCT 4 NEXTWORD [BRANCH IF STILL TO BE PRINTED 7=^J ... PMESSAGE TEXT1,6,FXPM1 7=^K ... CALL 7 (JPRINT1) 7=^L ... LDX 1 BDTL 7=^M ... LDN 4 512 7=^N ... BXGE 4 1,ZOK [J IF LENGTH OK 7=^S ... STO 4 BDTL [ELSE ADJUST 7=^^ ... PMESSAGE WORD1,3,FXPM1 [AND COMMENT 7?26 ...ZOK BZE 1 ZC2 [J IF LENGTH ZERO 7?2? ... LDX 1 BDTP 7?2D ... BNZ 1 ZC1 7?2K ... LDN 1 4 [ L + 4 = P 7?2Q ... SMO FXPM1 7?2X ... ADS 1 TEXT3 7?34 ...ZC2 PMESSAGE TEXT3,3,FXPM1 7?39 ... BRN (JPMSEG) [ 7?3B ...ZC1 LDN 1 0 7?3H ... LDX 5 BDTP [ SET UP ADDRESS FOR FIRST LINE 7?3N ...ZC3 CALL 7 (JUP) 7?3T ... 2 7?42 ... CALL 7 (JDECN) 7?47 ... CALL 7 (JUP) 7?4# ... 2 7?4F ... SMO BDTP 7?4L ... LDX 5 0(1) 7?4R ... CALL 7 (JDECP) [ PUTS OUT VALUE AS CHARACTER POIN 7?4Y ... BNG 5 ZC5 7?55 ... PMCORES 5,,ZC7 7?5= ...ZC5 7?5C ... SMO FXPM1 7?5J ... LDX 6 STERIX 7?5P ... STO 6 2(3) 7?5W ... SMO BDTP 7?63 ... STOZ 0(1) 7?68 ...ZC7 CALL 7 (JPRINT1) 7?6* ... ADN 1 1 7?6G ... LDX 5 1 [ SET UP LINE NO. AFTER LINE 0 7?6M ... TXU 1 BDTL 7?6S ... BCS ZC3 7?6^ ...# 7?76 ...# SUSPICIOUS POINTERS HAVE BEEN ZEROISED 7?7? ...# 7?7D ... PMESSAGE TEXT2,3,FXPM1 7?7K ... ENDLIST 1 [PUTS ADDRESS AFTER LISTS IN ACC 1 7?7Q ... PMCORES 1,,Z1 [J IF POINTER OK 7?7X ... PMESSAGE WORD2,6,FXPM1 [ELSE COMMENT 7?84 ... LDX 1 CORES [AND ADJUST 7?89 ...Z1 SMO FXPM1 7?8B ... STO 1 SNA+6 7?8H ...# THIS LAST REMARK STORES AWAY AN UPPER BOUND FOR ALL LISTS 7?8N ...# 7?8T ...# THERE IS NO PAGE COUNT, YBLNO < BDTL INITIATES ANOTHER PAGE 7?92 ... SMO FXPM1 7?97 ... STOZ YBLNO [COUNT OF DEVICES PRINTED 7?9# ... [CONSTANTS FOR THE FOLLOWING ROUTINE 7?9F ...Z3 LDN 0 6 [X0=MAX NO OF BLOCKS TO BE CONSIDERED 7?9L ... LDN 2 0 [X2=MODIFIER ON SNA 7?9R ... LDN 6 1 [X6=UPDATE CONSTANT 7?9Y ... LDX 7 BDTL [X7=LENGTH OF BDT 7?=5 ... SMO FXPM1 7?== ... LDX 4 SNA+6 [ FOR POSSIBLE STORAGE IN SNA +7(2) 7?=C ...# AN OVERALL UPPER BOUND. IN ALL CASES BUT ONE, IT GETS REDUCE 7?=J ...# 7?=P ...# THE Z4 LOOP COUNTS OUT GROUPS OF 6 SETTING UP BOUNDS 6 = MA 7?=W ...# PER PAGE, BUT IF YBLNO = BDTL THEN SOME NO. LESS THAN 6 GOES 7??3 ... LDX 3 BDTP 7??8 ... SMO FXPM1 7??* ... ADX 3 YBLNO 7??G ...Z4 7??M ... LDX 5 0(3) 7??S ... BZE 5 Z5 7??^ ... SMO FXPM1 7?#6 ... STO 5 SNA(2) 7?#? ... SMO FXPM1 7?#D ... STO 4 SNA+7(2) 7?#K ... ADS 6 2 [UPDATE X2 7?#Q ...Z5 7?#X ... ADS 6 3 [ AUGMENT (3) BY UNITY 7?*4 ...# NEXT THREE LINES TAKE CARE OF THE LAST PAGE, WHEN POSSIBLY L 7?*9 ...# 6 COLUMNS, WHILE THE TWO SUBSEQUENT LINES CHANGE PAGES AFTER 7?*B ... SMO FXPM1 7?*H ... ADS 6 YBLNO [UPDATE YBLNO 7?*N ... SMO FXPM1 7?*T ... TXU 7 YBLNO [YBLNO=BDTL? 7?B2 ... BCC Z6 [IF YES (EXHAUSTED TABLE) J 7?B7 ... TXU 2 0 [X2=6? 7?B# ... BCS Z4 [NO J 7?BF ...Z6 SMO FXPM1 7?BL ... STO 2 YCOLNO [X2 IS NO OF COLUMNS IN OUTPUT 7?BR ...# THIS NEXT IS TO SORT BOUNDS INTO APPROPRIATE PAIRS 7?BY ...# 7?C5 ...# THE Z7.Z8 LOOPS ARE EQUIVALENT TO 7?C= ...# FOR ACC 2 = 0 STEP 1 UNTIL YCOLNO - 1 DO 7?CC ...# BEGIN SET UP BASE 7?CJ ...# FOR ACC 1 = 0 STEP 1 UNTIL BDTL - 1 DO 7?CP ...# IF BASE < 0(BDTP)(1) < UPPER LIMIT THEN U.L. _ 0(BDTP)(1) EN 7?CW ... LDN 2 0 [X2 IS A MODIFIER BOUNDED BY YCOLNO 7?D3 ...Z7 7?D8 ... LDN 1 0 [X1 POINTS TO RELATIVE ADDRESS IN BDT 7?D* ...Z8 LDX 3 BDTP [ROUTINE TO FIND NEXT HIGH NO IN BDT 7?DG ... ADX 3 1 7?DM ... LDX 5 0(3) 7?DS ... SMO FXPM1 7?D^ ... TXL 5 SNA(2) 7?F6 ... BCS Z9 7?F? ... SMO FXPM1 7?FD ... TXU 5 SNA(2) 7?FK ... BCC Z9 7?FQ ... SMO FXPM1 7?FX ... TXL 5 SNA+7(2) 7?G4 ... BCC Z9 7?G9 ... SMO FXPM1 7?GB ... STO 5 SNA+7(2) [RESET SNATCH+7 7?GH ...Z9 ADN 1 1 [UPDATE X1 7?GN ... TXL 1 BDTL [TABLE FINISHED 7?GT ... BCS Z8 [NO J 7?H2 ... LDN 4 1024 7?H7 ... SMO FXPM1 7?H# ... LDX 3 SNA+7(2) 7?HF ... SMO FXPM1 7?HL ... SBX 3 SNA(2) [GET LENGTH OF LIST 7?HR ... BXGE 4 3,Z10 [J IF LENGTH OK 7?HY ... SMO FXPM1 7?J5 ... LDX 3 THINDS(2) [ELSE SET UP MESSAGE 7?J= ... SMO FXPM1 7?JC ... STO 3 WORD3 7?JJ ... PMESSAGE WORD3,6,FXPM1 [PRINT 7?JP ... SMO FXPM1 7?JW ... LDX 4 SNA(2) 7?K3 ... ADN 4 1024 [DEFAULT LENGTH FOR ANY LIST 7?K8 ... SMO FXPM1 7?K* ... STO 4 SNA+7(2) 7?KG ...Z10 ADN 2 1 [UPDATE POINTER TO SNA NUMBER 7?KM ... SMO FXPM1 7?KS ... TXL 2 YCOLNO [POINTER=YCOLNO? 7?K^ ... BCS Z7 [ IF FALSE THEN JUMP ELSE OUTPUT 7?L6 ...# 7?L? ...# THE ZJ1 LOOP INSERTS TYPES INTO 1ST LINE PER PAGE 7?LD ... LDN 2 0 7?LK ...ZJ1 SMO FXPM1 7?LQ ... LDX 3 SNA(2) 7?LX ... LDX 6 JK52C(3) 7?M4 ... SRL 6 15 [GET PERIPHERAL TYPE 7?M9 ... SMO FXPM1 7?MB ... LDN 3 Z [START OF TABLE 7?MH ...ZJ2 LDX 5 0(3) 7?MN ... BZE 5 ZJ4 [J IF END OF TABLE 7?MT ... LDCH 5 0(3) 7?N2 ... TXU 5 6 7?N7 ... BCC ZJ3 [J IF CORRECT TYPE 7?N# ... ADN 3 4 7?NF ... BRN ZJ2 7?NL ...ZJ4 CALL 7 (JGNO1) 7?NR ... SMO FXPM1 7?NY ... STO 5 TYPE+3 [STORE TYPE NUMBER 7?P5 ... SMO FXPM1 7?P= ... LDN 3 TYPE ['DEVICE TYPE NN' 7?PC ...ZJ3 BCHX 3 £ 7?PJ ... LDX 4 JPMOD 7?PP ... ADN 4 1 7?PW ... MVCH 3 15 [PERIPHERAL TYPE NAME INTO BUFFER 7?Q3 ... CALL 7 (JUP) 7?Q8 ... +20 7?Q* ... ADN 2 1 7?QG ... SMO FXPM1 7?QM ... TXL 2 YCOLNO 7?QS ... BCS ZJ1 7?Q^ ... CALL 7 (JPRINT2) [PRINT LINE 7?R6 ...# 7?R? ...# AFTER SETTING UP YCOLNO OF HEADINGS THE LISTS THEMSELVES 7?RD ...# ACC 1 IS THE LINE COUNT, ACC 2 THE COLUMN COUNT 7?RK ...# THE FIRST LINE IS HANDLED DIFFERENTLY FROM THE SECOND ONES 7?RQ ...# THE FIRST WORD IN EACH LIST HAS ITS ADDRESS IN DECIMAL 7?RX ... LDN 1 0 7?S4 ... LDN 2 0 7?S9 ...XBR1 CALL 7 (JUP) [UPDATE BUFFER MODIFIER 7?SB ... 2 7?SH ... SMO FXPM1 7?SN ... LDX 5 SNA(2) [GIVE ADD OF 1ST WORD OF LIST IN DEC 7?ST ... CALL 7 (JDECN) 7?T2 ... CALL 7 (JUP) [UPDATE BUFFER MODIFIER 7?T7 ... 2 7?T# ... CALL 7 XCHK [GET CONTENTS IN OCTAL 7?TF ... SMO FXPM1 7?TL ... TXL 2 YCOLNO [ IS ROW FINISHED 7?TR ... BCS XBR1 [NO-REPEAT 7?TY ... CALL 7 (JPRINT2) [YES-PRINT LINE 7?W5 ...# 7?W= ...# SUBSEQUENT LINES HAVE NO ABSOLUTE ADDRESS BUT POSSIBLY A K M 7?WC ...# HOWEVER WE MUST INVESTIGATE WHETHER THE LIST IS COMPLETE AND 7?WJ ...# THE PAGE PATTERN WORD AS WELL AS ADJUSTING THE BUFFER POINTE 7?WP ...# CORRECT NO OF SPACES 7?WW ... SMO FXPM1 7?X3 ... LDX 2 YCOLNO 7?X8 ... NGN 1 1 7?X* ... LDN 0 0 7?XG ... SLL 01 0(2) 7?XM ... SMO FXPM1 7?XS ... STO 0 QPPW 7?X^ ...# 7?Y6 ...# XBR2 LOOP DOES A LINE ACC 1 IS LINE NUMBER 7?Y? ... LDN 1 0 [ RESTORE (1) = 0 7?YD ...XBR2 LDN 5 0 [IN X5 COLUMN COUNT 7?YK ... ADN 1 1 [IN X1 LINE COUNT 7?YQ ... LDN 4 K57 7?YX ... TXL 4 1 7?^4 ... BCS XBR4 7?^9 ... LDN 3 YYLIST-YLIST-1 [ ALLOWS LIST TO BE INCREASED 7?^B ...XBR3 SMO FXPM1 7?^H ... TXU 1 YLIST(3) 7?^N ... BCC XBR5 7?^T ... BCT 3 XBR3 7#22 ...# XBR3 LOOP FINDS OUT IF LINE NO. REQUIRES A K MNEMONIC 7#27 ...# 7#2# ...# XBR4 LOOP DOES THE (YCOLNO) OF ELEMENYTS IN EACH LINE 7#2F ...XBR4 CALL 7 (JUP) 7#2L ... 5 7#2R ... BRN XBR7 7#2Y ...XBR5 CALL 7 (JUP) 7#35 ... 5 7#3= ... LDN 4 #2053 [#2053 = SPACE,K 7#3C ... SLL 4 12 7#3J ... ADN 4 #500 [# 500 = 5 ,0 7#3P ... ADX 4 3 [REQUIRES (3) TO BE A SINGLE DIGIT 7#3W ... LDN 2 0 7#43 ... LDX 3 JPMOD 7#48 ...# 7#4* ...# XBR6 LOOP INSERS ANY K MNEMONIC IF COLUMN IS NOT EXHAUSTED 7#4G ...XBR6 SMO FXPM1 7#4M ... LDX 7 SNA+7(2) 7#4S ... SMO FXPM1 7#4^ ... SBX 7 SNA(2) 7#56 ... TXL 1 7 7#5? ... BCC XBR8 7#5D ... STO 4 0(3) 7#5K ...XBR8 ADN 3 5 7#5Q ... ADN 2 1 7#5X ... SMO FXPM1 7#64 ... TXU 2 YCOLNO 7#69 ... BCS XBR6 7#6B ...XBR7 CALL 7 (JUP) 7#6H ... 6 7#6N ... LDX 2 5 7#6T ... CALL 7 XCHK 7#72 ... LDX 5 2 7#77 ... SMO FXPM1 7#7# ... TXU 2 YCOLNO 7#7F ... BCS XBR4 7#7L ... CALL 7 (JPRINT1) 7#7R ... SMO FXPM1 7#7Y ... LDX 4 QPPW 7#85 ... BNZ 4 XBR2 7#8= ...# 7#8C ...# WHEN IT IS FOUND EXHAUSTED THE PAGE IS COMPLETE AND WE INVETI 7#8J ... SMO FXPM1 7#8P ... LDX 5 YBLNO 7#8W ... TXU 5 BDTL 7#93 ... BCS Z3 7#98 ... BRN (JPMSEG) 7#C6 #END ^^^^ ...52133721000100000000