{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LOADEREM867)}} ====== LOADEREM867 ====== (George Source) **Macros used:** [[george:macro:JBUSY|JBUSY]], [[george:macro:JENG|JENG]], [[george:macro:TEST|TEST]] 22FL ...#SEG LOADEREM86 [M. DRUKKER 22J9 ...# ######################################################## 22LS ...# 22PC ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 22S2 ...# 22WK ...# ######################################################### 22^= #LIS K0LOADERMT>K0LOADER>K0ALLGEO 23DW # 23L4 ...#SKI G3 23R= ...( 23YG # 24D6 ...# THIS SEGMENT CONTAINS THE SECOND ENTRY POINT: 24XQ ...# K1LOADEREM : WE GET HERE WHEN THE GEORGE FILE HAS BEEN 25CB ...# LOCATED AFTER A DA/ED/FD COMMAND UNDER EMULN. 25X2 # GEORGE IS TRANSFERRED FROM TAPE TO ITS 26BL # FUTURE HOME 26W= # 29#B # *** DATA AREAS *** 29S2 # 2=?L # 2=R= #DEF MTFAILMK=JLFAIL 2?=W #DEF THEFILE=JLFILE 2?QG #DEF TRAPFAIL=JLTRAP 2#=6 #DEF STARTCOMM=JLCOMM 2##* ...#DEF SMALL=JLGSMALL 2#BJ ...#DEF SFMESS=JLGSFMESS 2#DR ...#DEF MFEMESS=JLGMFEMESS 2#H2 ...#DEF MTFAIL=JLGMTFAIL 2#K9 ...#DEF VLOST=JLGVLOST 2#MD ...#DEF READY=JLGREADY 2#PQ # 2*9B ...Z511 +511 2*P2 ...Z512 +512 2MFG MTYPE5 #73050005 [WD 0 OF TYPE 5 BLK 2M^6 MENT #73030002 [WD 0 OF ENTRY BLK 2NDQ ...MRFIRS +DFSTABLE+FIRS [OLD D-ADDRS AS READING-IN BLKS 2NYB ...MHEADB 2PD2 ...#GAP 10 2PXL ...ZBMARK +0 [NEXT OFF TAPE(0) / ZERO-BLK(<0) 2XR6 SEPAR +0 [I/P ZERO-BLK SEPARATION 2Y=Q MASKA #37777777 [USEFUL MASK & LARGE NUMBER 2Y#^ ...MASK5 #37777 [FOR D : SHELLSORT ETC 2YC8 ...MASK5X #77740000 [FOR L/K:UPDATING 2YFC ...MASK1K #77777000 [FOR ROUNDING D/1 UP&DOWN 512 2YHL ...MASK2K #77776000 [FOR ROUNDING D/1 UP&DOWN 1K 2YKT ...MASK2D #77777770 [FOR ROUNDING D/128 UP&DOWN 1K/128 2YN4 ...N1 +1 2YQ? ...N3 +3 2YSG ...N5 +5 2YWP ...N9 +9 2YYY ...X1 +0 [FOR ACCUMULATOR 2^37 ...XK18 +K18 [FOR LOADERI 2^5B ...XMETAFORM +K1METAFORM 2^7K ...# 2^9S ...JLSWBUF 2^#3 ...SWBUF +0 [SINGLE(0) / DOUBLE(<0) BUFFERING 2^B= ...QTSWTCH +3 [BEF(3)/DURG(21)/AFT(0) CHAP TABLE 2^DF ...JLTDOUBUF 2^GN ...TDOUBUF +0 [DECIDES O/P BUFFER (+0 / +512) 2^JX ...OLDDCHP +0 [NEXT CHAPTER'S OLD D-ADDRESS 2^M6 ...NEWDCHP +0 [ " " NEW " 2^P* ...OLDDPTR +0 [POINTER TO CURRENT OLD D-ADDRESS 2^RJ ...NEWDPTR +0 [ " " " NEW " 2^TR ...OLDDIFF +0 [OLD POINTER DIFFERENCE 2^Y2 ...NEWDIFF +0 [NEW " " 3229 ...NEXTGAP +0 [POINTER TO NEXT RESERVED AREA 324D ...NOLBUF +0 [NO. WORDS IN JLLBUFF 326M ...NOMBUF +0 [NO. WORDS IN JLMBUFF 328W ...NOMFUB +512 [512 - NOMBUF 32?5 ...MINN +0 [WORDS TO TRANSFER 32*# ...QNO +0 [K-ADDRESS OF CHAPTERS 32CH ...QTNTRY +0 [CHAPTER TABLE ENTRY 32FQ ...QHTADD +DCHTABLE [ " " ADDRESS (-1 AT END) 32H^ ...TABNTRY0 +0 [PREVIOUS LENGTH 32L8 ...TABNTRY1 +0 [PREVIOUS CHAPTAB1 ENTRY 32NC ...TABNTRY2 +0 [ " CHAPTAB2 " 32ST ...ZLKTAB +0 [CHAPTER TABLE IN XBUFF1 32X4 ...MHBKSZ +0 [SIZE OF DATA BLOCK 32^? ...QNTBIG -1 [NUMBER OF LARGE GAPS 333G ...POSCHSM -1 [CHECKSUM'S POSITION 335P ...VALCHSM +0 [ " VALUE 35M8 ...# 35MF ...JLXCHPCT 35MQ ...XCHAPCOUNT +KLTAB-1 [NO. CHAPS SET UP (WAS -0) 35N# ...MESH +0 [M FOR SHELLSORT 35NW ...ZK +0 [K FOR SHELLSORT 35PD ...# 35Q2 ...# 35QJ ...# SUBROUTINE SHELLSORT 35R6 ...# 35RN ...# REF. ACM COMMUNICATIONS 35S= ...# VOL. 2 NO. 7 35SS ...# 35TB ...# ON ENTRY ONLY ACC 2 NEED BE DEFINED 35TY ...# ON EXIT ONLY ACC 2 IS STILL DEFINED 35WG ...# 35X4 ...# ACC 5 IS USED FOR I 35XL ...# ACC 6 IS USED FOR J 35Y8 ...# ACC 7 IS THE LINK ACC 35YQ ...# 35^# ...# 35^W ...# 362D ...# 3632 ...SHELLSORT 363J ... LDX 4 XCHAPCOUNT(2) [ GET N 3646 ...MESHHALVE 364N ... SRL 4 1 [ GET M = [N/2] 365= ... BZE 4 (7) [ M=0? 365S ... STO 4 MESH(2) 366B ... LDX 0 XCHAPCOUNT(2) 366Y ... SBX 0 4 367G ... STO 0 ZK(2) [ K=N-M 3684 ... LDN 6 0 [ J=0 368L ...SETI LDX 5 6 [ I=J 3698 ...TEST LDX 3 ACHAPTAB1(2) 369Q ... ADX 3 5 36=# ... LDX 0 0(3) [ ITH ENTRY 36=W ... ANDX 0 MASK5(2) 36?D ... LDX 1 MESH(2) 36#2 ... ADX 1 3 36#J ... LDX 4 0(1) [ (I+M)TH ENTRY 36*6 ... ANDX 4 MASK5(2) 36*N ... TXL 4 0 [ J IF D(I) < OR = D(I+M) 36B= ... BCC STEPJ 36BS ...XCIANGE 36CB ... LDX 0 0(3) [ SWAP (I) AND (I+M) ENTRIES 36CY ... LDX 4 0(1) 36DG ... STO 4 0(3) 36F4 ... STO 0 0(1) 36FL ... SBX 5 MESH(2) [ I=I-M 36G8 ... BPZ 5 TEST [ CONTINUE ORDERING SUBSET? 36GQ ...STEPJ ADN 6 1 [ J=J+1 36H# ... LDX 4 MESH(2) [ RESET X4 IN CASE OF JUMP 36HW ... TXU 6 ZK(2) [ J=K ? 36JD ... BCC MESHHALVE 36K2 ... BRN SETI 36KW # 375G # 37K6 # 384Q ...K1LOADEREM 5H?2 # 5HQL # WE GET HERE WHEN THE BS FILE HAS BEEN LOCATED, CARRYING 5J== # X3->DL OF DEVICE HOLDING FILE 5JPW ...# X1->FILE FAC(DISC)/ENTRY(DRUM) 5K9G # 5KP6 LDN 2 THEFILE(2) [ ) 5L8Q MOVE 1 5 [ ) STORE AWAY FOR FUTURE 5LNB LDX 2 G3DOL [ ) 5M82 STO 3 JLPSBS(2) [ ) 5MML ... LDX 0 AJLTBUFF(2) [SET 5N7= ... STO 0 JLMDATA+2(2) [ UP 5NLW ... LDN 0 JLMHEADA(2) [ THE 5P6G ... STO 0 JLMHEAD+2(2) [ CTSA'S 5PL6 ... STOZ JLTMCNT(2) 5Q5Q ... STOZ SWBUF(2) [START WITH SINGLE BUFFERING 67R= LDX 6 1(1) 68=W ANDX 6 MASKA(2) 68QG STO 6 BSDESC+2(2) [START BLKNO 69=6 LDX 7 2(1) 69PQ ANDX 7 MASKA(2) 6=9B STO 7 BSDESC+3(2) [END BLKNO+1 6=P2 LDX 0 4(1) 6?8L STO 0 BSDESC+4(2) [BLKS/CYL 6?N= SBX 7 6 [BLKSIZE OF FILE 6#7W SLL 7 7 6#MG ... STO 7 JLVOLFILE(2) [STORE WD.SIZE OF FILE 6*76 SRL 7 7 6*LQ DVS 6 0 [/BLKSPERCYL 6B6B BNZ 6 V14 6BL2 LDX 6 BSDESC+4(2) [FULL DEPTH FILE 6C5L V14 STO 6 BSDESC+5(2) [FILE DEPTH 6CK= # 6D4W ...V01 LDX 0 JLVOLFILE(2) [GET SIZE OF (NONEMULATED) BS FILE 6DJG ... TXL 0 BSVOL(2) [< PROGRAM SIZE? 6F46 ... BCS JLTOOSMALL [YES SO WON'T FIT 6FHQ # 6G3B # FOLLOWING COMPACTS THE FS TABLE & STOZZES THE REST, 6GH2 # LEAVING A POINTER TO THE END OF THE LIST. 6H2L LDN 0 FSTABLEN-1 6H*3 ... LDX 1 AJLRTAB(2) 6HMD ... ADN 1 5 6H^W ... LDX 2 AJLRTAB(2) 6JFG TFS20 LDX 4 0(2) 6J^6 BZE 4 TFS21 6KDQ ADN 2 5 6KYB BRN TFS20 6LD2 TFS21 LDX 4 0(1) 6LXL BNZ 4 TFS22 6MC= ADN 1 5 6MWW BCT 0 TFS21 6NBG BRN TFS23 6NW6 TFS22 MOVE 1 5 6P*Q STOZ 0(1) 6PTB BRN TFS20 6Q*2 TFS23 LDX 7 2 6QSL TFS24 TXL 2 1 6R#= BCC TFS25 6RRW STOZ 0(2) 6S?G ADN 2 1 6SR6 BRN TFS24 6T=Q TFS25 LDX 2 G3DOL 6TQB ... SBX 7 AJLRTAB(2) 6W=2 ... STO 7 JLRSW(2) 6WPL # 6X9= # 6XNW V02 LDCT 0 #400 [TRAP DISC/TAPE 6Y8G STO 0 TRAPFAIL(2) [FAILS NOW ON 6YN6 # 6^7Q # FROM THIS POINT THE TAPE HAS MOVED & RECOVERY IS AWKWARD IF A 6^MB # BS FAIL OCCURS & IMPOSSIBLE IF A TAPE FAIL OCCURS. ANY FAIL FROM 7272 # NOW ON CAUSES CONTROL TO PASS TO RECOVERY. 72LL # FIRST POSITION TAPE AT START OF PROGRAM FILE IN GIN DUMP. 736= # 73KW JENG 3,V03 [TAPE STILL THERE 745G LDN 1 VLOST(2) 74K6 BRN CATASTROPHE [GIVE UP 754Q V03 LDN 6 JLMSKIP(2) 75JB ... CALL 0 JLPTAPE [SKIP TO END OF S/F 7642 LDN 0 1 76HL ... ADS 0 JLTMCNT(2) 773= LDN 6 JLMHEAD(2) 77GW ... CALL 0 JLPTAPE [READ END S/F SENT 782G LDCT 0 #400 78G6 ... ERX 0 JLMHEADA(2) 78^Q ... BNZ 0 JLMFE [NOT CORRECT 79FB ...V04 CALL 0 JLPTAPE+1 [READ A TM 79^2 LDN 0 1 7=DL ... ADS 0 JLTMCNT(2) 7=Y= ... CALL 0 JLPTAPE [READ START SENT FOR GIN DUMP 7?CW ... LDX 0 JLMHEADA(2) 7?XG SBN 0 6 [NOT END OF S/F SENT 7#C6 ... BNZ 0 JLMFE 7#WQ ... LDX 0 JLMHEADA+2(2) 7*BB ... LDX 4 JLMHEADA+3(2) 7*W2 ... LDX 7 JLMHEADA+4(2) 7B*L TXU 0 GELLY+1(2) 7BT= TXU 4 GELLY+2(2) 7C#W TXU 7 GELLY+3(2) 7CSG ... BCS JLMFE [NOT CORRECT NAME 7D#6 ... CALL 0 JLPTAPE+1 [READ TM 7DRQ LDN 0 1 7F?B ... ADS 0 JLTMCNT(2) 7FR2 ... CALL 0 JLPTAPE [READ GIN REQUEST SLIP 7G=L ... LDCH 0 JLMHEADA(2) 7GQ= SBN 0 #73 7H9W ... BNZ 0 JLMFE [NOT BINARY BLK 7HPG ... LDX 0 JLMHEADA(2) 7J96 ANDN 0 #77 7JNQ SBN 0 1 7K8B ... BNZ 0 JLMFE [NOT REQUEST SLIP 7KN2 ...V06 CALL 0 JLPTAPE [READ TO FIND PROGRAM FILE DUMP 7L7L ... LDX 0 JLMHEADA(2) 7LM= TXU 0 MENT(2) 7M6W ... BCC RFRST [ENTRY BLK - END OF CORE IMAGE 7MLG TXU 0 MTYPE5(2) 7N66 ... BCS JLMFE [NOT TYPE 5 BLK 7NKQ ... CALL 0 JLPTAPE [READ DATA BLK 7P5B BRN V06 7PK2 # 7Q4L # 7QJ= # 7R3W # TAPE NOW POSITIONED TO READ GEORGE TYPE 5 BLKS 7RHG # 7RP7 ...RFRST LDCT 0 #400 [NOW DOUBLE-BUFFER 7RWS ... STO 0 JLSWBUF(2) 7S4F ... LDN 6 JLMHEAD(2) 7S=6 ... CALL 0 JLPTAPE [READ SPECIFYING BLK PERHAPS 7SCR ...RNEXT LDN 6 JLMDATA(2) 7SKD ... CALL 0 JLPTAPE [READ A DATA BLK 7SR5 ... LDN 0 JLMHEADA(2) 7SYQ ... LDN 1 MHEADB(2) 7T6C ... MOVE 0 5 7T#4 ... LDX 0 MHEADB(2) 7TG2 TXU 0 MENT(2) 7T^L BCS V13 [NOT ENTRY BLK 7W2X ... LDX 4 NOMBUF(2) 7W48 ... BZE 4 NOMOR [J WORKING DA BUFFER EMPTY 7W5F ... LDX 7 NEWDPTR(2) 7W6Q ... LDX 4 AJLMBUFF(2) 7W83 ... LDN 5 512 7W9# ... ERX 5 TDOUBUF(2) [FLIP DA BUFFER SWITCH 7W=K ... STO 5 TDOUBUF(2) [AND REMEMBER IT 7W?W ... ADX 5 AJLBUFF(2) 7W*7 ... MOVE 4 0 7WBD ... CALL 0 JLWRITE [WRITE AWAY LAST DA BUFFER 7WCP ...NOMOR 7WF= ... LDN 7 MHEADB(2) 7WYW SUM 6 3 7X2= ... BNZ 6 JLSUMF [CHECKSUM FAIL ON ENTRY BLK 7X2N ...# FINISHED READING OFF TAPE 7X36 ...# TIDY UP BEFORE LOADER 7X3L ... LDN 6 JLMTREW(2) 7X52 ... STOZ SWBUF(2) [BACK TO SINGLE BUFFERING 7X6B ... STOZ TDOUBUF(2) 7X7Q ... LDX 1 JLPSMT(2) 7X96 ...RN1 JBUSY 1,RN1 [EXTRA TAPE CHECK 7X=G ... LDX 3 JLPSBS(2) 7X?W ...RN2 JBUSY 3,RN2 [EXTRA DISC CHECK 7X*= ... LDX 1 ZLKTAB(2) [UPDATE ZALDS (JLTABLE) 7XBL ... SBN 1 1 [REAL START OF CH TABLE 7XD2 ... ADN 1 KFSTABLE [FSTABLE 7XFB ... LDX 0 0(1) 7XGQ ... LDX 7 0 7XJ6 ... ANDX 0 MASK5(2) [D/128 7XKG ... SLL 0 7 [D 7XLW ... STO 0 JLTABLE+2(2) 7XN= ... ANDX 7 MASK5X(2) 7XPL ... SRL 7 13 [L 7XR2 ... BNZ 7 ZA1 7XSB ... LDN 7 1024 [0 => 1024 7XTQ ...ZA1 STO 7 JLTABLE(2) 7XX6 ... SBN 1 KFSTABLE 7XYG ... ADN 1 KCDUM [CDUM 7X^W ... LDX 0 0(1) 7Y3= ... LDX 7 0 7Y4L ... ANDX 0 MASK5(2) [D/128 7Y62 ... SLL 0 7 [D 7Y7B ... STO 0 JLTABLE+3(2) 7Y8Q ... ANDX 7 MASK5X(2) 7Y=6 ... SRL 7 13 [L 7Y?G ... BNZ 7 ZA2 7Y#W ... LDN 7 1024 [0 => 1024 7YB= ...ZA2 STO 7 JLTABLE+1(2) 7YCQ BRN K3LOADERMT [GO & LOAD LOADER 7YXB # 7^C2 # CHECK LAST BLK READ IS TYPE 5 & WRITE IT (OR ZERO BLKS) AWAY. 7^WL # 82B= V13 TXU 0 MTYPE5(2) 82TW ... BCS JLMFE [NOT TYPE 5 BLK 83*G ... LDN 7 MHEADB(2) 83T6 SUM 6 5 84#Q ... BNZ 6 JLSUMF [SPECIFYING BLK DOES NOT CHECKSUM 84SB ... LDN 6 JLMHEAD(2) 85#2 ... CALL 0 JLPTAPE [READ A SPEC BLK 85RL ... LDX 1 MHEADB+2(2) 86?= ANDN 1 #777 [EXTRACT BLK LENGTH 86QW ... LDX 7 AJLTBUFF(2) 87=G SUM 6 0(1) [& SUM BLK 87Q6 ... STO 6 MHEADB+4(2) 889Q ... LDN 7 MHEADB+3(2) 88PB SUM 6 2 8992 ... BNZ 6 JLSUMF [DATA BLK DOES NOT CHECKSUM 89NL # 8=8= # MUST NOW DETERMINE IF ANY ZERO-BLKS HAVE BEEN OMITTED BETWEEN BLK 8=MW # JUST READ & PRECEDING ONE. IF NONE HAVE, BLKS SHOULD BE 8?7G # CONCURRENT. OTHERWISE, IF SOME ZERO-BLKS ARE MISSING, 8?M6 ...# WE MUST WRITE THEM TO JLLBUFF, ENSURING THAT FS'S & ME'S 8#6Q ...# FOR THEM ARE INCLUDED (STILL REFERRING TO OLD D-ADDRESSES). 8#LB # 8*62 ...V15 LDX 0 JLVOLFILE(2) 8*KL ... TXL 0 MHEADB+1(2) [BS ADDRESS 8B5= ... BCS JLMFE [NOT IN RANGE 8BJW ... LDX 0 MHEADB+1(2) [THIS BACKING STORE ADDRESS 8C4G ... SBX 0 JLNDADD(2) [ - LAST BS-ADDR. 8CJ6 SBN 0 512 8D3Q BZE 0 VV01 [CONSECUTIVE BLKS 8DHB SRL 01 9 [SEPARATION/512 8F32 SRL 1 15 8FGL ... BNZ 1 JLMFE [SEP(MOD 512) NOT=0, MT FE 8G2= ... STO 0 SEPAR(2) [NO. OF ZERO-BLKS 8GFW ... LDX 0 MHEADB+2(2) [PREVIOUSLY FUNNY HERE 8G^G ... STO 0 MHBKSZ(2) [SIZE OF NON-ZERO BLK 8MTQ LDCT 0 #400 [SET ZERO-BLK MARK 8N*B STO 0 ZBMARK(2) 8NKW ...VV04 LDN 0 1 8NWB ... SBS 0 SEPAR(2) [REDUCE SEPARATION 8P6W ... LDX 0 AJLZERBUFF(2) 8PCB ... LDX 1 AJLLBUFF(2) 8PMW ... MOVE 0 0 [MOVE IN ZERO-BLOCK (0=>512) 8PYB ... LDN 0 512 8Q8W ... STO 0 MHEADB+2(2) [WD COUNT OF BLK 8QFB ... ADX 0 JLNDADD(2) 8QPW ... STO 0 JLNDADD(2) [UPDATE 'LAST BS-ADDR' 8R2B ... STO 0 MHEADB+1(2) [SET UP SPEC BLK FOR NEXT ZERO-BLK 8R?6 BRN VV02 8RCJ ...VV03 LDX 0 MHBKSZ(2) [SIZE OF NON-ZERO BLK 8RJ2 ... STO 0 MHEADB+2(2) 8RND ... BRN VV00 8RSW ...VV01 LDN 0 512 8R^# ... STO 0 MHEADB+2(2) 8S5Q ...VV00 STOZ ZBMARK(2) [NO ZERO-BLKS 8S=B LDN 0 512 8SF4 ... ADS 0 JLNDADD(2) [UPDATE "LAST D-ADDRESS" 8SMQ ... LDX 0 AJLTBUFF(2) 8SWD ... LDX 1 AJLLBUFF(2) 8T56 ... MOVE 0 0 8T?S ...VV02 LDN 0 512 [GRAND JUNCTION 8TGG ... STO 0 NOLBUF(2) [INDICATE JLLBUFF FULL 8TP= # 8W8W ...# FILL IN ANY FS DESCS FOR BLOCK READ 8WNG # 8X86 ... LDX 3 JLRSW(2) 8XMQ BZE 3 V07 [NO FS'S 8Y7B BPZ 3 V08 8YM2 NGX 3 3 8^2P ... LDX 1 AJLRTAB(2) 8^BD ... LDX 0 0(1) 8^Q7 ... LDX 1 AJLLBUFF(2) 925W MOVE 0 0(3) 92KG ... STOZ JLRSW(2) 9356 BRN V07 93JQ # 944B V08 LDX 1 MRFIRS(2) [USE OLD D-ADDRS AT THIS STAGE 94J2 ... LDX 6 MHEADB+1(2) 953L ... ADX 6 MHEADB+2(2) [END D-ADDR OF BLK 95H= TXL 1 6 962W BCC V07 [THIS BLK TOO LOW 96GG SBX 6 1 [DISTANCE FROM FIRS TO END OF BLK 9726 LDN 3 FSTABLEN+1*5 [COUNT=TOTAL SIZE OF TABLE 97FQ TXL 6 3 97^B BCC V09 [ROOM FOR WHOLE TABLE IN THIS BLK 98F2 LDX 3 6 [ELSE TAKE COUNT TO END OF BLK 98YL ...V09 SBX 1 MHEADB+1(2) 99D= ... ADX 1 AJLLBUFF(2) 99XW ... LDX 0 AJLRTAB(2) 9=CG MOVE 0 0(3) [MOVE IN (PART OF) TABLE 9=X6 ADX 0 3 9?9H ... LDX 1 AJLRTAB(2) 9?HY ... STO 0 0(1) [SET POINTER TO NEXT WD TO MOVE IN 9?WB SBN 3 FSTABLEN+1*5 [X3=-REMAINDER COUNT 9#B2 ... STO 3 JLRSW(2) [NEG TO INDICATE MORE TO GO 9#TL # 9**= ...# CHECK IF THERE ARE ANY MENDS FOR THIS BLOCK. 9*SW # 9B7? ...V07 LDX 1 AJLRAT(2) 9BFN ... LDX 7 0(1) 9BS6 BZE 7 V12 [NO MENDS 9C?Q SRL 7 1 9CL7 ... LDX 1 AJLRAT(2) 9CYJ ... ADN 1 1 9D?2 LDN 6 0 9DQL V10 LDX 3 0(1) [D-ADDR OF MEND 9F== BZE 3 V11 [ALREADY DONE 9FG4 ... STO 1 X1(2) 9FPW ... LDX 1 AJLRAT(2) 9F^N ... LDX 6 0(1) [SET X6, STILL SOME TO DO 9G9G ... LDX 1 X1(2) 9GF# ... TXL 3 MHEADB+1(2) 9GP6 BCS V11 [THIS BLOCK TOO HIGH 9H8Q ... SBX 3 MHEADB+1(2) 9HNB ... TXL 3 MHEADB+2(2) 9J82 BCC V11 [OR TOO LOW 9JML ... ADX 3 AJLLBUFF(2) 9K7= LDX 0 1(1) [GET ALTERING WD 9KLW STOZ 0(1) [CLEAR IT & 9L6G STO 0 0(3) [ALTER BUFFER 9LL6 V11 ADN 1 2 9M5Q BCT 7 V10 [NEXT 9M#F ... LDX 1 AJLRAT(2) 9MH8 ... STO 6 0(1) 9MPX ...# 9MYL ...# HERE CHECK IF BLOCK CONTAINS PART OF CHAPTER TABLE 9N7* ...V12 LDX 0 JLNDADD(2) [COULD BE MHEADB+1 INSTEAD 9NB4 ... STO 0 OLDDPTR(2) [OLD D-ADDRESS (EARLY ONES) 9NJR ... LDX 1 QTSWTCH(2) [GRAND JUNCTION 9NRG ... BZE 1 W10 [AFTER CHAPTER TABLE 9P29 ... SBN 1 1 9P8Y ... BZE 1 V303 [MAY HAVE 3RD PT CHAPTER TABLE 9PCM ... SBN 1 1 9PLB ... BZE 1 V302 [2ND PART CHAPTER TABLE 9PT5 ... LDX 0 QHTADD(2) 9Q3S ... SBX 0 OLDDPTR(2) 9Q=H ... SBN 0 512 9QF= ... BPZ 0 V22 [WHOLE BK BEFORE CH TABLE/THE END 9QM^ ...V301 ADN 0 513 9QWN ... ADX 0 AXBUFF1(2) 9R5C ... STO 0 ZLKTAB(2) 9R#6 ... LDX 0 AJLLBUFF(2) [1ST PART CHAPTER TABLE 9RGT ... LDX 1 AXBUFF1(2) 9RPJ ... MOVE 0 0 9RY? ... STOZ QTNTRY(2) 9S72 ... BRN V21 9S*P ...V302 LDX 0 AJLLBUFF(2) [2ND PART 9SJD ... LDX 1 AXBUFF2(2) 9SR7 ... MOVE 0 0 9T8K ...V21 LDN 0 1 9TC# ... SBS 0 QTSWTCH(2) 9TL3 ... BRN RMORE 9TSQ ...V303 LDX 0 AJLLBUFF(2) [3RD PART 9W3F ... LDX 1 AXBUFF3(2) 9W=8 ... MOVE 0 0 9WDX ... LDX 0 ZLKTAB(2) 9WML ... LDX 1 ACHAPTAB1(2) 9WW* ... MOVE 0 0 [COPYING INTO CHAPTAB1 9X54 ... LDX 7 XCHAPCOUNT(2) 9X?R ... SBN 7 512 9XGG ... ADN 0 512 9XP9 ... ADN 1 512 9XXY ... SMO 7 9Y6M ... MOVE 0 0 [REST OF CHAPTER TABLE 9Y*B ... LDN 1 3 9YJ5 ... STO 1 QTSWTCH(2) 9YQS ...# 9Y^H ...# CHANGE FROM 0LL.LLL.LLL.00D.DDD.DDD.DDD.DDD 9^8= ...# TO KKK.KKK.KKK.K0D.DDD.DDD.DDD.DDD 9^B^ ...# [ =D%A/128 L=L%A/4(MOD 1024/4) K=K%A-1] 9^KN ...MASKING 9^SC ... LDN 1 0 =236 ... LDX 3 ACHAPTAB1(2) =29T ...MSKG2 ADX 3 1 =2DJ ... TXL 1 XCHAPCOUNT(2) =2M? ... BCC MSKND [END OF TABLE =2W2 ... LDX 0 0(3) [NEXT ENTRY =34P ... BZE 0 MSKG3 [IGNORE ZERO ENTRIES =3?D ... ANDX 0 MASK5(2) [REMOVE LENGTH => 000DDDDD =3G7 ... LDX 7 1 =3NW ... SLL 7 14 [SHOULD BE KKKK0000 =3XK ... ORX 7 0 [ADD IN CHAPTER NO. =46# ... STO 7 0(3) [UPDATE ENTRY =4*3 ...MSKG3 SBX 3 1 =4HQ ... ADN 1 1 =4QF ... BRN MSKG2 =4^8 ...MSKND [COULD UPDATE XCHAPCOUNT FROM X1 =57X ... CALL 7 SHELLSORT [SORT IN D-ADDRESS ORDER =5BL ...# =5K* ...# PRODUCE STRETCHED CH TABLE (1K BOUNDARIES) =5S4 ...# GET GAPS FIRST =62R ...UPD00 LDN 4 0 [CHAPTER TABLE LINE =69G ... LDX 3 ACHAPTAB2(2) =6D9 ...UPD01 LDX 1 ACHAPTAB1(2) =6LY ... ADX 1 4 [I =6TM ... LDX 5 0(1) [ITH ENTRY (CHAPTAB1) =74B ... BZE 5 UPD04 [FORGET ZERO ENTRIES =7?5 ... LDX 7 5 =7FS ... ANDX 7 MASK5X(2) [K =7NH ... ANDX 5 MASK5(2) [D/128 =7X= ... LDX 0 TABNTRY1(2) [PREVIOUS OLD D =85^ ... ADX 0 TABNTRY0(2) [+ LENGTH (RDD ^ 128) =8#N ... TXL 0 5 [V. NEW D =8HC ... BCC UPD02 [NOT TOO FAR APART =8Q6 ... LDX 1 QNTBIG(2) =8YT ... ADN 1 1 =97J ... STO 1 QNTBIG(2) [UPDATE GAP COUNT =9B? ... ADX 1 ACHAPTAB3(2) [START ADDRESSES =9K2 ... STO 0 0(1) [START OF RESERVED GAP =9RP ... LDX 1 QNTBIG(2) ==2D ... ADX 1 ACHAPTAB4(2) ==97 ... STO 5 0(1) [END OF RESERVED GAP ==CW ...UPD02 ADX 3 4 ==LK ... STO 7 0(3) [FILL IN CHAPTAB2 ==T# ... SBX 3 4 [RESTORE X3 (CHAPTAB2) =?43 ... SRL 7 14 [K =?=Q ... LDX 1 ZLKTAB(2) =?FF ... ADX 1 7 =?N8 ... LDX 0 0(1) [KTH ENTRY IN ZLKTAB =?WX ... ANDX 0 MASK5X(2) [JUST L =#5L ... BZE 0 UPD03 [L 0 => LENGTH 1024 =##* ... SRL 0 13 [PART DIVIDE L TO ROUND & AVOID V =#H4 ... SBN 0 1 [ROUND THIS UP =#PR ... SRL 0 7 [L/128 =#YG ... ADN 0 1 [RDD UP =*79 ... BRN UPD05 [NOW GOT LENGTH =**Y ...UPD03 LDN 0 8 [1K-LONG CHAPTERS =*JM ...UPD05 STO 0 TABNTRY0(2) =*RB ... STO 5 TABNTRY1(2) =B25 ...UPD04 ADN 4 1 =B8S ... TXL 4 XCHAPCOUNT(2) [STOPS CH TABLE PROBLEMS =BCH ... BCS UPD01 [RETURN FOR NEXT ONE IN ZLKTAB =BL= ...# =BS^ ...# ADD IN RESERVED AREA AT END OF PROGRAM FILE =BWW ...UPD10 ADX 5 0 [D+L =BYR ... LDX 6 BSVOL(2) [END OF GEORGE PROGRAM FILE =C2N ... SRL 6 7 [...IN BLOCKS =C4K ... TXL 5 6 [IS A CHAPTER THE LAST THING? =C6G ... BCC UPD11 [J IF SO =C8C ... LDX 1 QNTBIG(2) =C=C ... ADN 1 1 [ONE EXTRA =CF6 ... STO 1 QNTBIG(2) [UPDATE GAP COUNT =CMT ... ADX 1 ACHAPTAB3(2) [START ADDRESSES =D5? ... STO 5 0(1) [LAST D+L =DPD ... LDX 1 QNTBIG(2) =DY7 ... ADX 1 ACHAPTAB4(2) =F6W ... STO 6 0(1) [END OF FINAL GAP =F*K ...UPD11 LDX 1 QNTBIG(2) =FJ# ... ADN 1 1 [ONE EXTRA =FR3 ... STO 1 QNTBIG(2) [UPDATE GAP COUNT =F^Q ... ADX 1 ACHAPTAB3(2) [START ADDRESSES =G8F ... LDX 5 MASKA(2) [HUGE AT END OF GAPS =GC8 ... STO 5 0(1) =GKX ...# NOW STRETCH NEW ADDRESSES BY JUMPING ROUND RESERVED AREAS =GSL ...# AND PUT IN 1K BOUNDARIES =H3* ...UPD20 LDN 4 0 [CHAPTER TABLE LINE =H=4 ... LDN 5 0 [GAP NUMBER =HDR ... LDN 6 0 [NEW D =HMG ... LDX 3 ACHAPTAB2(2) =HW9 ...UPD21 ADX 3 4 [I =J4Y ... LDX 1 ACHAPTAB1(2) =J?M ... ADX 1 4 =JGB ... LDX 0 0(1) [ITH CHABTAB1 ENTRY =JP5 ... BZE 0 UPD29 [IGNORE ZERO ENTRIES =JXS ...UPD23 LDX 1 ACHAPTAB3(2) [START OF GAP =K6H ... ADX 1 5 [J =K*= ... LDX 7 0(1) [JTH GAP =KH^ ... ANDX 7 MASK2D(2) [ROUND DOWN =KQN ... TXL 6 7 =K^C ... BCS UPD22 [BEFORE GAP =L86 ... LDX 1 0(3) [NOW TEST IF VERY CLOSE TO GAP =LBT ... SRL 1 14 [K =LKJ ... ADX 1 ZLKTAB(2) =LS? ... LDX 0 0(1) [KTH ENTRY IN ZLKTAB =M32 ... ANDX 0 MASK5X(2) [JUST L =M9P ... BZE 0 UPD25 [0 => 1024 =MDD ... SRL 0 17 =MM7 ... SBN 0 1 [ROUND THIS UP =MTW ... ANDX 0 MASK2D(2) =N4K ... ADN 0 #10 =N?# ... SRL 0 3 [L/128 =NG3 ... ADX 0 6 =NNQ ... TXL 0 7 =NXF ... BCS UPD22 [BEFORE GAP =P68 ...UPD25 LDX 1 ACHAPTAB4(2) [END OF GAP =P#X ... ADX 1 5 [J =PHL ... LDX 6 0(1) [END OF RESERVED AREA =PQ* ... SBN 6 1 [ROUND THIS UP =P^4 ... ANDX 6 MASK2D(2) =Q7R ... ADN 6 #10 [END OF GAP =QBG ... ADN 5 1 =QK9 ... BRN UPD23 [RETURN FOR NEXT GAP =QRY ...UPD22 LDX 1 0(3) [ITH CHAPTAB2 ENTRY =R2M ... SRL 1 14 [K =R9B ... ADX 1 ZLKTAB(2) =RD5 ... LDX 0 0(1) [KTH ENTRY IN ZLKTAB =RLS ... ANDX 0 MASK5X(2) [JUST L =RTH ... ADX 0 6 =S4= ... STO 0 0(1) [UPDATE ZLKTAB =S=^ ... ADS 6 0(3) [UPDATE CHAPTAB2 =SFN ... ADN 6 #10 [FOR NEXT D =SNC ...UPD29 SBX 3 4 =SX6 ... ADN 4 1 =T5T ... TXL 4 XCHAPCOUNT(2) =T#J ... BCS UPD21 [BACK AGAIN =T*X ... SLL 6 7 [CHECK NEW FILE SIZE =TC= ... STO 6 BSVOL(2) [SIZE OF EMULATED PROGRAM FILE =TDK ... TXL 6 JLVOLFILE(2) =TFY ... BCC JLTOOSMALL [TOO BIG! =TG8 ... LDX 7 MASKA(2) =TGD ... LDX 3 ACHAPTAB1(2) =TGN ... SMO 4 [LARGE ADDRESS AFTER LAST... =TGY ... STO 7 0(3) [...ENTRY IN ACHAPTAB1 =TG^ ... LDX 3 ACHAPTAB2(2) [...AND IN ACHAPTAB2 =TH2 ... SBN 4 1 =TH3 ... SMO 4 =TH4 ... LDX 7 0(3) [LAST ENTRY =TH5 ... ANDX 7 MASK5(2) =TH6 ... ADN 7 #10 [WORK OUT VALUE =TH7 ... ADN 4 1 =TH8 ... SMO 4 =TH9 ... STO 7 0(3) [AFTER LAST ENTRY =TH? ...# =TQ2 ...# ALL DONE =TYP ...# NOW WRITE AWAY =W7D ...V50 LDX 7 QTSWTCH(2) =WB7 ... SBN 7 1 =WJW ... STO 7 QTSWTCH(2) [DOWN 1 =WRK ... BZE 7 V53 [WAS 1 =X2# ... SBN 7 1 =X93 ... BZE 7 V52 [WAS 2 =XCQ ...V51 LDX 0 AXBUFF1(2) [1ST TIME =XLF ... BRN V54 =XT8 ...V52 LDX 0 AXBUFF2(2) [2ND TIME =Y3X ...V54 LDX 1 AJLMBUFF(2) =Y=L ... MOVE 0 0 =YF* ... STOZ NOLBUF(2) =YN4 ... BRN W60 [WRITE OFF =YWR ...V53 LDX 0 AXBUFF3(2) [3RD TIME =^5G ... LDX 1 AJLLBUFF(2) [WRITE BACK (NO.2 SHIRT) =^#9 ... MOVE 0 0 =^GY ...V58 LDX 1 ACHAPTAB1(2) =^PM ... ADX 1 QNO(2) [K =^YB ... LDX 0 0(1) [NEXT ONE ?275 ... BNZ 0 V59 [FIRST REAL ENTRY ?2*S ... LDN 0 1 ?2JH ... ADS 0 QNO(2) ?2R= ... BRN V58 [NEXT ENTRY ?2^^ ...V59 ANDX 0 MASK5(2) [JUST D ?38N ... SLL 0 7 ?3CC ... STO 0 OLDDCHP(2) ?3L6 ... SBX 0 OLDDPTR(2) ?3ST ... SBN 0 512 [NOT OTHERWISE REDUCED ?43J ... STO 0 OLDDIFF(2) ?4=? ... ADN 0 #777 ?4F2 ... ANDX 0 MASK2K(2) ?4MP ... ADN 0 1024 [ROUND UP ?4WD ... STO 0 NEWDIFF(2) ?557 ... LDX 1 ACHAPTAB2(2) ?5?W ... ADX 1 QNO(2) ?5GK ... LDX 0 0(1) [NEXT ONE ?5P# ... ANDX 0 MASK5(2) [JUST D ?5Y3 ... SLL 0 7 ?66Q ... STO 0 NEWDCHP(2) ?6*F ... LDN 1 1 [IN MIDDLE OF 1ST ENTRY ALREADY ?6J8 ... STO 1 QNTBIG(2) [REINITIALISE ?6QX ...# ?6^L ...V22 LDX 0 AJLLBUFF(2) [PRE CHAPTER TABLE STRAIGHT -> BS ?78* ... LDX 1 AJLMBUFF(2) ?7C4 ... MOVE 0 0 ?7KR ...V55 STOZ NOLBUF(2) ?7SG ... BRN W54 [SEND TO DISC ?839 ...# ?89Y ...RMORE LDX 0 ZBMARK(2) [HANDLING ZERO-BLKS? ?8DM ... BZE 0 RNEXT [NO, READ NEXT BLK-PAIR OFF TAPE ?8MB ... LDX 0 SEPAR(2) [ALL ZERO-BLKS WRITTEN AWAY? ?8W5 ... BZE 0 VV03 [YES, GO & WRITE AWAY WAITING BLK ?94S ... BRN VV04 ?9?H ...# ?9G= ...# NOW ACTUALLY STRETCH PROGRAM FILE ?=6C ...W10 LDX 0 NEWDIFF(2) ?=*6 ... BZE 0 W20 [NEXT ITEM ?=HT ... BRN W30 [SAME ITEM ?=QJ ...# ?=^? ...W29 LDN 0 1 ??82 ... ADS 0 QNO(2) [POINTER FOR NEXT ENTRY ??BP ...W20 LDX 0 ZK(2) [POSSIBLY WRONG POSITION ??KD ... SBX 0 QNO(2) ??S7 ... BPZ 0 W28 [NOT YET END OF CHTABLE ENTRIES ?#2W ... LDN 0 3 ?#9K ... STO 0 QTSWTCH(2) [END AS AT START ?#D# ... LDX 0 MASKA(2) ?#M3 ... STO 0 QHTADD(2) [HUGE TO PRETEND BEFORE CHTABLE ?#QB ... BRN W201 ?#TQ ...W28 LDX 1 QNO(2) [I ?*4F ... ADX 1 ACHAPTAB1(2) ?*?8 ... LDX 0 0(1) ?*FX ... BZE 0 W29 [IGNORE 0 ENTRY ?*NL ... ANDX 0 MASK5(2) [JUST D/128 ?*X* ... SLL 0 7 ?B64 ...W201 STO 0 OLDDCHP(2) [OLD D-ADDR OF NEXT CHAPTER ?B#R ... LDX 3 QNTBIG(2) [J ?BHG ... ADX 3 ACHAPTAB3(2) ?BQ9 ... LDX 6 0(3) ?BYY ... SLL 6 7 ?C7M ... STO 6 NEXTGAP(2) ?CBB ... TXL 0 6 ?CK5 ... BCC W22 [NEW GAP ?CRS ...W21 LDN 0 1024 [NEW CHAPTER ?D2H ... STO 0 OLDDIFF(2) [MAX VALUE ?D9= ... STO 0 NEWDIFF(2) [START OF CHAPTER ?DC^ ... LDX 3 QNO(2) ?DLN ... ADX 3 ACHAPTAB2(2) ?DTC ... LDX 0 0(3) ?F46 ... ANDX 0 MASK5(2) ?F=T ... SLL 0 7 ?FFJ ... STO 0 NEWDCHP(2) [NEW D-ADDR OF NEXT CHAPTER ?FN? ... STO 0 NEWDPTR(2) ?FX2 ... LDX 1 0(3) [PREPARE CHECKSUM UPDATE ?G5P ... SRL 1 14 [K ?G#D ... ADX 1 ZLKTAB(2) ?GH7 ... LDX 0 0(1) [KTH ENTRY IN ZLKTAB ?GPW ... ANDX 0 MASK5X(2) [JUST L ?GYK ... SRL 0 13 ?H7# ... BNZ 0 W211 [NOT 1024 ?HB3 ... LDN 0 1024 [0 => 1024 ?HJQ ...W211 SBN 0 1 [LAST (CHECKSUM) WORD ?HRF ... STO 0 POSCHSM(2) [CHECKSUM'S POSITION ?J28 ... LDX 3 NEWDCHP(2) ?J8X ... SBX 3 OLDDCHP(2) ?JCL ... STO 3 VALCHSM(2) [TO INCREASE CHECKSUM ?JL* ... STOZ NOMBUF(2) [JLMBUFF EMPTY ?JT4 ... LDN 0 512 ?K3R ... STO 0 NOMFUB(2) ?K=G ... LDN 0 1 ?KF9 ... ADS 0 QNO(2) [UPDATE I FOR NEXT TIME ?KMY ... LDX 1 QNO(2) [NEW I ?KWM ... ADX 1 ACHAPTAB1(2) [GET D-ADDR NEXT CHAP ?L5B ... LDX 0 0(1) ?L#5 ... ANDX 0 MASK5(2) [JUST D/128 ?LGS ... SLL 0 7 [D ?LPH ... TXL 0 NEXTGAP(2) ?LY= ... BCS W212 [NEXT CHAP < GAP ?M6^ ... LDX 0 NEXTGAP(2) ?M*N ...W212 SBX 0 OLDDCHP(2) [NEXT ITEM ?MJC ... TXL 0 OLDDIFF(2) ?MR6 ... BCC W213 [BOTH > 1024 (CAN GEOERR THIS) ?M^T ... STO 0 OLDDIFF(2) [MIN OF ABOVE ?N8J ...W213 BRN W30 ?NC? ...W22 LDN 0 1 [NEW GAP ?NL2 ... ADS 0 QNTBIG(2) [UP J FOR NEXT TIME ?NSP ... LDX 3 QNTBIG(2) ?P3D ... ADX 3 ACHAPTAB3(2) ?P=7 ... LDX 7 0(3) ?PDW ... SLL 7 7 [NEXT GAP ?PMK ... TXL 7 OLDDCHP(2) ?PW# ... BCS W223 [GAP NEXT (CAN GEOERR THIS) ?Q53 ... LDX 7 OLDDCHP(2) ?Q?Q ...W223 LDX 6 NEXTGAP(2) [THIS GAP ?QGF ... ANDX 6 MASK1K(2) [ROUND DOWN ?QP8 ... STO 6 NEWDPTR(2) ?QXX ... SBX 7 6 ?R6L ... STO 7 OLDDIFF(2) ?R** ... SBN 7 1 ?RJ4 ... ANDX 7 MASK1K(2) ?RQR ... ADN 7 512 [ROUND UP ?R^G ... STO 7 NEWDIFF(2) [NEED TO COPY ALL ACROSS ?S89 ... LDN 7 512 ?SBY ... STO 7 NOLBUF(2) ?SKM ... STO 7 NOMFUB(2) [START OF BOTH JLLBUFF & JLMBUFF ?SSB ... STOZ NOMBUF(2) ?T35 ...W30 LDX 3 OLDDIFF(2) [MAY NEED TEST FOR 0S (END CHAP) ?T9S ... TXL 3 NOLBUF(2) ?TDH ... BCS W31 [OLDDIFF WRITE AWAY ?^LX ... LDX 3 OLDDIFF(2) ?^TL ... BZE 3 W50 [NO MORE WANTED #24* ... LDX 3 NOLBUF(2) #2?4 ... BZE 3 RMORE [JLLBUFF EMPTY => READ IN #2FR ... BRN GELLIT [SHOULD NEVER HAPPEN #2NG ...W50 LDX 0 POSCHSM(2) #2X9 ... BNG 0 W54 [NO CHECKSUM HERE #35Y ... TXL 0 Z512(2) #3#M ... BCC W53 [NEXT TIME #3HB ... LDX 1 AJLMBUFF(2) #3Q5 ... ADX 1 0 [CHECKSUM'S POSITION #3YS ... LDX 0 VALCHSM(2) #47H ... ADS 0 0(1) [UPDATE CHECKSUM #4B= ... BVSR £ [CLEAR V #4J^ ...W53 LDN 0 512 #4RN ... SBS 0 POSCHSM(2) #52C ...W54 LDN 0 512 #596 ... SBS 0 NEWDIFF(2) [REDUCE FOR QUICK SALE #5CT ...W60 LDN 1 512 #5LJ ... ERS 1 TDOUBUF(2) [SWITCH BUFFER #5T? ... LDX 0 AJLMBUFF(2) [UNLIKELY 0-BKS REQD #642 ... LDX 1 AJLBUFF(2) #6=P ... ADX 1 TDOUBUF(2) #6FD ... MOVE 0 0 #6N7 ... LDX 0 AJLZERBUFF(2) #6WW ... LDX 1 AJLMBUFF(2) #75K ... MOVE 0 0 [ZEROIZE BUFFER #7## ... LDN 0 512 #7H3 ... STO 0 NOMFUB(2) #7PQ ... STOZ NOMBUF(2) #7YF ... LDX 7 NEWDPTR(2) [D-ADDRESS OF BLOCK #878 ... ADS 0 NEWDPTR(2) #8*X ... CALL 0 JLWRITE [WRITE BLOCK TO B/S #8JL ... LDX 0 QTSWTCH(2) #8R* ... BZE 0 W51 [AFTER CHAPTER TABLE #924 ... TXU 0 N3(2) #98R ... BCC RMORE [BEFORE CHAPTER TABLE #9CG ... BRN V50 [DURING CHAPTER TABLE #9L9 ...W51 LDX 3 NOLBUF(2) #9SY ... BZE 3 RMORE [MORE PLEASE #=3M ... BRN W10 [POSSIBLE REARRANGING OF BUFFERS #==B ...# #=F5 ...#GAP 767-0? #=MS ...) #=WH ...#SKI G4 #?5= ...#GAP 127-0? #??^ ...# #?JW #END ^^^^ ...455223630001