IPBTAPE867

(George Source)

Macros used: ACROSS, ALTLENG, FREECORE, HUNTW, MHUNTW, SEGENTRY

IPBTAPE867.txt
22FL    #SEG  IPBTAPE                    [IPB - COMM
22^=    [ (C)   COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982  
23DW    #LIS  K0IPBTAPE>K0IPB>K0ALLGEO  
23YG                   8HIPBTAPE
24D6    #   
24XQ          SEGENTRY   K1IPBTAPE,SK1IPBTAPE   
25CB    SALPH          #74  
25X2    SHIFT          #76  
26BL    XA             #41  
26W=    TYPTAB  
27*W          BRN      TCT  
27TG                   #10  
28*6          BRN      STLEG
28SQ                   #20  
29#B          BRN      STRAL
29S2                   #21  
2=?L          BRN      TCT  
2=R=                   #27  
2?=W          BRN      STLEG
2?QG                   #30  
2#=6          BRN      SPACK
2#PQ                   #31  
2*9B          BRN      TABEX
2*P2                   #32  
2B8L          BRN      TCT  
2BN=                   #33  
2C7W          BRN      STLEG
2CMG                   #35  
2D76          BRN      ZCAR 
2DLQ                   #36  
2F6B          BRN      STLEG
2FL2                   #40  
2G5L          BRN      TCT  
2GK=                   #64  
2H4W          BRN      TNATC
2HJG                   #70  
2J46          BRN      STLEG
2JHQ                   #73  
2K3B          BRN      STRAL
2KH2                   #74  
2L2L          BRN      STLEG
2LG=                   #100 
2L^W    #   
2MFG    #     SUBROUTINE TO RE-FIND BLOCK BEING LENGTHENED BY ALTLENG   
2M^6    #   
2NDQ    REH   MHUNTW   2,ADATA,CREADL   
2NYB          EXIT  1  0
2PD2    #   
2PXL    [   
2QC=    [      K1  IPBTAPE  
2QWW    [   
2RBG    SK1IPBTAPE  
2RW6    #   
2S*Q    #     INPUT  FROM REMOTE TAPE READER ; NPU IS MAXIMUM OR UP TO ETX ;
2STB    #     CONVERSION COMPLETE AFTER 2000 CHARS OR NEWLINE OR ETX : STORE
2T*2    #     RECORD IN FILE ; IN GRAPHIC MODE CONVERT PAIRS FROM LINE CODE 
2TSL    #   
2W#=    #     CHANGE FROM BETA TO ALPHA SHIFT BETWEEN IDATSGS CAUSES ALPHA SHIFT
2WRW    #     TO BE LOST : MUST INSERT #74 IF MEET SHIFT SENSITIVE CHARACTER
2X?G    #     (I.E. A LETTER) BEFORE #75 IN NORMAL OR ALLCHARS MODE WHEN LAST   
2XR6    #     BLOCK ENDED IN BETA SHIFT ; OTHERWISE DISCARD REDUNDANT #75   
2Y=Q    #   
2YQB          MHUNTW   3,ADATA,CREADL   
2^=2          MHUNTW   2,ADATA,INPUSG   
2^PL          LDX   1  FX2  
2^^D ...      STO   3  ACOMMUNE5(1) 
329=          LDEX  5  A1(3)
32NW          LDX   6  A1(2)               [ROOM LEFT IN PARTIALLY FULL OR 128  
338G          ANDN  6  #7777               [NO. CHARS IN INPUT SEG  
33N6          ADX   3  ACOMMUNE6(1)        [CPDATA OR DCH POINTER IF PART FULL  
347Q          ADX   2  ACOMMUNE4(1)        [LDCH POINTER IF PART USED OR A1+2   
34CJ ...      SBS   2  ACOMMUNE4(1) 
34MB    TAPE  LDN   7  #6000
3572          ANDX  7  AWORK4(1)           [B12 SET IF DISCARDING DATA DUE  
35LL          SLL   7  12                  [TO TAB OUT OF RANGE 
366=    TAR 
36KW          LDCT  4  #300 
375G          STO   2  ACOMMUNE7(1)        [IN CASE JUMP TO RINRE   
37K6          LDCT  0  1
384Q          ANDX  4  AWORK4(1)           [B1 SET IF ALLCHAR ; B2 IF GRAPHIC   
38JB          ANDX  0  AWORK4(1)
3942          SLC   4  2                   [>0 IF ALL ; 0 IF NORMAL ; <0 IF GRAP
39HL          ERS   0  AWORK4(1)           [B8 SET IF LAST BLOCK INCOMPLETE AND 
3=3=          LDX   1  FX1                 [ENDED WITH #76  
3=GW          BNZ   0  TPAIR               [TEST FOR DELTA PAIR 
3?2G          SMO      FX2  
3?G6          LDEX  1  AWORK4   
3?^Q          BZE   1  TLOOP               [NO OUTSTANDING TAB SPACES TO STORE  
3#FB          SMO      FX2  
3#^2          DEX   0  AWORK4   
3*DL          ADN   6  1                   [COUNTERACT BCT AFTER TUD
3*Y=          BRN      RINRE               [STORE SPACES OUTSTANDING
3BCW    #   
3BXG    TLOOP LDCH  0  0(2) 
3CC6          LDX   1  FX1  
3CWQ          BCHX  2  £
3DBB          TXL   0  SALPH(1) 
3DW2          BCS      TSEN                [< #74   
3F*L          TXU   0  SHIFT(1)            [#76 
3FT=          BCC      TDEL                [LOOK FOR DELTA PAIR NEXT CHAR   
3G#W          BNG   4  TCT                 [DISCARD SHIFT IF GRAPHIC
3GSG          SMO      FX2  
3H#6          LDEX  1  AWORK3              [OLD SHIFT   
3HRQ          SMO      FX2  
3J?B          STO   0  AWORK3              [NEW SHIFT   
3JR2          BNG   7  TCT                 [TAB OUT OF RANGE : DISCARD SHIFT
3K=L          TXU   0  1
3KQ=          BCC      TCT                 [NO CHANGE   
3L9W    PUT   DCH   0  0(3) 
3LPG          BCHX  3  £
3M96    TUD   BCT   5  TCT  
3MNQ          SBN   6  1
3N8B          BRN      TALT                [CREADL FULL : INCREASE LENGTH BY 32 
3NN2    #   
3P7L    TSEN  BNG   7  TCT  
3PM=          ADN   7  1
3Q6W          SMO      FX2  
3QLG          LDXC  1  AWORK3   
3R66          BCC      PUT  
3RKQ          SMO      FX1  
3S5B          TXL   0  XA                  [#41 
3SK2          BCS      PUT                 [NOT SHIFT SENSITIVE I.E. ALPHABETIC 
3T4L          LDN   1  #74  
3TJ=          DCH   1  0(3) 
3W3W          SMO      FX2  
3WHG          STO   1  AWORK3              [SHIFT CHANGED   
3X36          BCHX  3  £
3XGQ          SBN   5  1
3Y2B          BNZ   5  PUT  
3YG2          SBN   7  1                   [CANCEL ADN AT TSEN  
3Y^L          BCHX  2  TMOB                [NOT ENOUGH ROOM : MOVE BACK 1 CHAR  
3^F=    #   
3^YW    TDEL  DCH   0  0(3) 
42DG          BCT   6  TPAIR               [TEST FOR DELTA PAIR IF NOT BLOCK END
42Y6          LDX   1  FX2  
43CQ          LDCT  0  1
43XB          ORS   0  AWORK4(1)           [INDICATE IDATSG ENDED WITH #76  
44C2          BRN      TLAT                [TEST FOR DELTA PAIR LATER   
44WL    TPAIR LDCH  0  0(2) 
45B=          BCHX  2  £
45TW          TXU   0  SHIFT(1) 
46*G          BCC      TDEL                [#7676 : IGNORE SECOND #76   
46T6          BNG   7  TENEL               [TEST FOR END OF RECORD ONLY 
47#Q          ADN   1  TYPTAB              [POINT TO TABLE  
47SB    TYPLP   
48#2          TXL   0  1(1) 
48RL          BCS      (1)                 [J WHEN FOUND CHARAVCTER RANGE   
49?=          BDX   1  TYPLP               [TRY NEXT CHARACTER RANGE
49QW    STRAL                              [STORE IF ALLCHAR
4==G          BZE   4  TCT                 [IGNORE IF NORMAL
4=Q6    STLEG                              [STORE UNLESS GRAPHIC
4?9Q          BPZ   4  STIT                [STORE IF ALLCHAR
4?PB          BRN      TCT                 [ELSE IGNORE 
4#92    ZCAR  LDN   7  0                   [ZEROISE TAB COUNT   
4#NL          BNG   4  TCT  
4*8=          BRN      STORO
4*MW    STIT  BUX   7  STORO
4B7G    TNATC ADN   7  1
4BM6          BNG   4  TGR                 [IF GRAPHIC CONVERT #7664 - #7667
4C6Q    STORO BCHX  3  £
4CLB          BCT   5  PUT  
4D62          LDCT  0  1                   [CREADL FULL : INDICATE CHAR IS PART 
4DKL          SMO      FX2                 [OF DELTA PAIR (FOR LATER)   
4F5=          ORS   0  AWORK4   
4FJW          BCHX  2  TMOB                [FORWARD 1 , BACK 2 : INVERSE BCHX   
4G4G    SPACK SBN   7  1                   [BACKSPACE : DECREMENT TAB COUNT 
4GJ6          BNG   4  TCT                 [DO NOT STORE IF GRAPHIC 
4H3Q          BRN      STORO
4HHB    TGR   ADN   0  #10                 [CONVERT FROM LINE CODE  
4J32          BRN      PUT  
4JGL    #   
4K2=    #     EXPAND #7631 = HORIZ TAB INTO SPACES ACCORDING TO TAB FIELDS SPEC.
4KFW    #   
4K^G    TABEX LDX   1  FX2  
4LF6          STO   2  ACOMMUNE7(1) 
4LYQ          HUNTW    2,AINPAR,ATB 
4MDB          LDN   0  #31  
4MY2          BNG   2  NOTAB               [NO TABS PARAMETER : PASS ON 
4NCL          ADN   7  1
4NX=          LDX   1  A1(2)               [COUNT OF TAB FIELDS 
4PBW    TABAG TXL   7  A1+1(2)  
4PWG          BCS      THIST               [THIS IS THE RELEVANT FIELD  
4QB6          ADN   2  1
4QTQ          BCT   1  TABAG
4R*B          ADN   5  1                   [COUNTERACT BCT AT TUD   
4RT2          LDN   0  #6000
4S#L          LDCT  7  #600                [COUNT TOO BIG : IGNORE REST OF BLOCK
4SS=          SMO      FX2  
4T?W          ORS   0  AWORK4              [SET 'DISCARD REST OF BLOCK' MARKER  
4TRG          BRN      ONLY1
4W?6    THIST LDX   1  A1+1(2)  
4WQQ          SBX   1  7
4X=B          LDX   7  A1+1(2)             [UPDATE TAB COUNT
4XQ2          SBN   7  1
4Y9L    RINRE TXL   5  1                   [REENTRY PT AFTER CREADL LENGTHENED  
4YP=          BCC      ROMOK               [ENOUGH ROOM IN CREADL FOR SPACES
4^8W          SBX   1  5
4^NG          SMO      FX2  
5286          DEX   1  AWORK4              [SPACES TO BE INSERTED AFTER ALTLEN  
52MQ          LDX   1  5                   [STORE SPACES TO END OF CREADL   
537B    ROMOK LDN   0  #20  
53M2          SBN   1  1
546L          DCH   0  0(3) 
54L=          LDX   2  3
555W          BCHX  3  £
55KG          BZE   1  ONLY1               [STORE ONLY ONE SPACE
5656          MVCH  2  0(1)                [STORE REQUISITE SPACES  
56JQ          SBX   5  1
574B    ONLY1 SMO      FX2  
57J2          LDX   2  ACOMMUNE7           [RETRIEVE INPUSG POINTER 
583L          BRN      TUD  
58H=    NOTAB LDX   2  ACOMMUNE7(1) 
592W          BPZ   4  STORO               [STORE IF NOT GRAPHIC
59GG          LDN  0  #20   
5=26          BRN      PUT                 [ELSE STORE 1 SPACE  
5=FQ    #   
5=^B    TENEL SBN   0  #32                 [TEST FOR END OF RECORD AFTER TAB
5?F2          BNZ   0  TCT                 [OUT OF RANGE
5?YL    TGNL  LDN   0  #20                 [SPACE-FILL REMAINDER OF 
5#D=    SACE  TXL   3  BITS22LS            [LAST WORD   
5#XW          BCS      TNLF                [B0-1 ZERO : POINTING TO CHAR 0  
5*CG          DCH   0  0(3) 
5*X6          BCHX  3  SACE 
5BBQ    TNLF  SBN   6  1
5BWB          LDX   1  FX2  
5CB2          ADS   2  ACOMMUNE4(1)        [LDCH POINTER IN INPUSG FOR NEXT MESS
5CTL          SBX   2  ACOMMUNE4(1) 
5D*=          DSA   6  A1(2)
5DSW    TUNS  LDX   0  BITS22LS 
5F#G          ANDS  0  AWORK3(1)           [UNSET SHIFT-SENS-SEARCH BIT FOR NOW 
5FS6          BRN      TEND 
5G?Q    #   
5GRB    TCT   BCT   6  TLOOP               [PICK UP NEXT CHARACTER  
5H?2    TCT2  LDX   1  FX2                 [<127 CHARS ; END OF NPU 
5HQL    TLAT  LDX   7  3
5J==          NGX   2  ACOMMUNE4(1)        [START ADDRESS OF ADATA/INPUSG   
5JPW          LDX   0  A1(2)
5K9G          BPZ   0  TGSA                [J IF NOT  END  OF NPU   
5KP6          BUX   6  TGNL               [INCREASE X6 AS SBN 1    LATER
5L8Q    TGSA
5LNB          LDX   3  ACOMMUNE5(1) 
5M82          DEX   5  A1(3)               [ROOM LEFT FOR CONVERTING INTO   
5MML          SBX   7  3
5N7=          STO   7  ACOMMUNE6(1)        [DCH POINTER WRT START OF BLOCK  
5NLW          FREECORE 2
5P6G          BRN      SEA                 [GET NEXT IDATSG TO COMPLETE MESSAGE 
5PL6    #   
5Q5Q    #     ADATA/CREADL FULL : INCREASE BY 32 WORDS UP TO MAX. OF 500
5QKB    #   
5R52    TWOB  ADN   6  1
5RJL    TMOB  SLC   2  2
5S4=          SBN   2  2                   [MOVE BACK 2 CHARACTERS  
5SHW          SRC   2  2
5T3G    TALT  LDX   1  FX2  
5TH6          ADS   2  ACOMMUNE4(1) 
5W2Q          SBX   2  ACOMMUNE4(1) 
5WGB          DSA   6  A1(2)               [REMAINDER COUNT OF CHARS TO CONVERT 
5X22          LDX   2  ACOMMUNE5(1)        [START ADDRESS OF ADATA/CREADL   
5XFL          LDX   4  ALOGLEN(2)   
5X^=          LDX   3  4
5YDW          LDN   0  CPDATA+500-A1
5YYG          TXL   4  0
5^D6          BCC      TMAR                [2000 CHARS STORED : APPEND RECORD   
5^XQ          ADN   4  32   
62CB          LDN   5  128  
62X2          TXL   4  0
63BL          BCS      TALEN
63W=          LDN   4  CPDATA+500-A1       [ALREADY 480+CPDATA-A1   
64*W          LDN   5  80   
64TG    TALEN ALTLENG  2,4,REH  
65*6          MHUNTW   2,ADATA,CREADL   
65SQ          LDX   1  FX2  
66#B          STO   2  ACOMMUNE5(1) 
66S2          ADN   3  A1(2)               [ADDRESS FOR NEXT DCH
67?L          MHUNTW   2,ADATA,INPUSG   
67R=          ADX   2  ACOMMUNE4(1)        [ADDRESS FOR NEXT LDCH   
68=W          SBS   2  ACOMMUNE4(1)        [START ADDRESS OF ADATA/INPUSG   
68QG          BZE   6  TLAT                [ALSO END OF IDATSG  
69=6          LDCT  0  1
69PQ          ANDX  0  AWORK4(1)
6=9B          BZE   0  TAR                 [OK : LAST CHAR STORED NOT DELTA CHAR
6=P2          SBN   3  1                   [STEP DCH ADDR BACK 1 CHAR TO DELTA  
6?8L          ORX   3  CACT                [FOR STORO TO STORE DELTA PAIR   
6?N=          ADN   5  1                   [STEP BACK BCT AS WELL   
6#7W          BRN      TAR  
6#MG    TMAR
6*76          ACROSS   READBULK,3          [STORING 2000 CHARS RECORD   
6*LQ    TEND
6B6B          ACROSS   READBULK,4          [END OF MESSAGE  
6BL2    SEA 
6C5L          ACROSS   READBULK,5        [GET NEXT IDATSG TO COMPLETE MESSAGE   
6CK=    #END
^^^^ ...541245620002
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1