DATUM

(George Source)

Macros used: ALTLEN, GEOERR, GETCHAP, JENVNOT, JNENVX, LABFIX

DATUM.txt
22FL    #SEG  DATUM70                      [BOB NICHOLSON   
22^=    #LIS  K0DATUM   
23DW    #   
23YG    #     THIS SEGMENT DATUMISES BLOCK AND WORD ADDRESSES   
24D6    #     ON ENTRY  BSL1 CONTAINS  ADDRESS  
24XQ    #               BSL2 CONTAINS  POINTER TO FILE DESCRIPTION  
25CB    #               BSL3 CONTAINS  COUNT
25X2    #     ON EXIT  X1  CONTAINS DATUMISED ADDRESS   
26BL    #              X2  CONTAINS ZERO OR MAXIMUM COUNT FOR TRANSFER  
26W=    #   
27*W    #     LINK IN BSL4  
27TG    #     PF1 FOR DATUMADD  
28*6    #     PF2 FOR DATUMBLK  
28SQ    #   
29#B    #   
29S2    #     DATUMADD ENTRY
2=?L          LABFIX   APF1                [D   
2=R=    PF1   LDX   1  BSL1 
2?=W          SRL   12 7               [CONVERT X1 TO BLOCK PART
2?QG          SRL   2  17              [OF ADDRESS,X2 WORD PART 
2#=6          STO   2  BSL5            [SAVE WORD PART  
2#PQ          BRN      R1   
2*9B    #   
2*P2    #     DATUMBLK ENTRY
2B8L          LABFIX   APF2 
2BN=    PF2   STOZ     BSL5                [WORDS   
2C7W          LDX   1  BSL1 
2CMG    R1    STO   0  BSL4                [SAVE LINK   
2D76          LDX   2  BSL2                [POINTER TO DESCRIPTION  
2DLQ          LDCH  0  A1(2)
2F6B          SBN   0  9
2FL2          BZE   0  R2                  [JUMP IF TYPE 9  
2G5L          SBN   0  16   
2GK=          BZE   0  R3                  [TYPE 25 
2H4W          DVS   0  A1+4(2)  
2HJG                                       [X0= BLOCK   
2J46                                       [X1= CYLINDER
2JHQ          TXL   1  A1+3(2)  
2K3B          BCC      R4                  [JUMP IF CYLINDER OUT OF RANGE   
2KH2          ADX   1  A1+1(2)             [ADD STARTING CYLINDER   
2L2L          LDX   2  A1+4(2)             [BLOCKS/SEGMENT  
2LG=          SBX   2  0                   [
2L^W          SLL   2  7                   [X2=MAXIMUM TRANSFER IN WORDS
2MFG          STO   2  BSL1 
2M^6          SMO      BSL2 
2NDQ          ADX   0  A1+2                [ADD START BLOCK 
2NH# ...      JNENVX   R8,MEEP,2           [J IF NOT EMULATION  
2NKX ...      ERX   0  1                   [SWAP
2NML ...      ERS   0  1                   [CONTENTS
2NP* ...      ERX   0  1                   [OF X0&X1
2NR4 ...      SMO      BSL2                [RECALCULATE DATUMISED   
2NSR ...      MPA   0  A1+4                [BLOCK NO INTO X1
2NWG ...R8  
2NYB          SMO      BSL2 
2PD2          LDX   2  A1   
2PXL          ANDN  2  #77  
2QC=          SMO      2
2QWW          CALL  2  PF4                 [CALL ADDRESS CONVERSION ROUTINE 
2RBG          LDX   1  0
2RW6          LDX   2  BSL1 
2S*Q          BRN      R7   
2STB    #     SLOW  DRUM
2T*2    R2    SLL   1  7                   [CONVERT TO WORD ADDRESS 
2TSL          ADX   1  BSL5 
2W#=    R3    LDX   0  A1+1(2)             [
2WRW          TXL   1  A1+2(2)             [
2X?G          BCC      R4                  [JUMP IF ADDRESS OUT OF RANGE
2XR6          LDX   2  A1+2(2)             [
2Y=Q          SBX   2  1                   [MAXIMUM TRANSFER
2YQB          ADX   1  0                   [
2^=2          SMO      BSL2 
2^PL          LDX   0  A1   
329=          SRL   0  18   
32NW          SBN   0  9
338G          BZE   0  R7                  [JUMP IF TYPE 9  
33N6          SLL   2  7                   [CONVERT TO WORDS
33S3 ...#    CHECK TRANSFER WITHIN 30K EXEC LIMIT   
33XY ...R7    LDN   0  30   
343T ...      SLL   0  10   
347Q ...      TXL   2  0
34?M ...      BCS      RR7  
34CJ ...      LDX   2  0
34HF ...RR7   TXL   2  BSL3 
34MB          BCC      R5   
3572          BRN      R6   
35LL    R4    LDN   1  0
366=    R5    LDN   2  0
36KW    R6    LDX   0  BSL4 
375G          EXIT  0  0                   [
37K6    #     DEVICE CONVERSION ROUTINES   X0=BLOCK X1=CYLINDER 
384Q    #   
38JB          LABFIX   APF3 
3942    PF3   SMO      BSL1 
39HL          BRN      £
3=3=    PF4 
3=GW    #TRA  PF4+EDS   
3?2G          BRN      QEDS                [ EDS
3?G6    #TRA  PF4+EMDS  
3?^Q          BRN      QEMDS               [ MEDS   
3#FB    #TRA  PF4+EMCF  
3#^2          BRN      QMCF                [ MCF
3*DL    #TRA  PF4+AFDS  
3*Y=          BRN      QAFDS               [ 2A DISC
3BCW    #TRA  PF4+BFDS  
3BXG          BRN      QBFDS               [ 2B DISC
3CC6    #TRA  EDS>EMDS>EMCF>BFDS>AFDS+1+PF4 
3CWQ    #   
3DBB    #     EDS CONVERSION ROUTINE
3DW2    #   
3D^6 ...QEDS
3F4= ...      STO   0  BSL5                [PRESERVE X0 
3F7B ...      JENVNOT QEDS1,MEEP           [J IF NOT EMULATION  
3F=G ...      LDX   0  1
3F*L ...      ORX   0  GSIGN               [SET B0 OF BLOCK NO  
3FDQ ...      EXIT  2  0
3FHW ...QEDS1   
3FM2 ...      LDX   0  BSL5                [REINSTATE X0
3FQ6 ...      SLL   0  17                  [BLOCK TO TOP 7 BITS 
3FT=          SLC   01 20                  [X0 HOLDS TOP 4 BITS OF CYLINDER 
3G#W          SLL   0  2
3GSG          SLL   01 4                   [2ND PART OF CYLINDER
3H#6          SLL   0  2
3HRQ          SLL   01 4                   [1ST PART OF  BLOCK  
3J?B          SLL   0  3
3JR2          SLL   01 3                   [2ND PART OF  BLOCK  
3K=L          EXIT  2  0
3KQ=    #   
3L9W    QEMDS                              [EDS(30),SAME  STRUCTURE AS 2B   
3LPG    #     2A FDS CONVERSION 
3M96    QAFDS SLL   0  12                  [BLOCK TO TOP 12 BITS
3MNQ          SRC   01 12   
3N8B          EXIT  2  0
3NN2    #   
3P7L    #     2B FDS CONVERSION 
3PM=    QBFDS   
3Q6W          STO   1  BSL5                [SAVE CYLINDER   
3QLG          LDX   1  0
3R66          DVS   0  BSFD                [DIVIDE BLOCK BY BLOCKS PER SURFACE  
3RKQ          SLL   1  9                   [SURFACE TO MIDDLE & BITS
3S5B          DEX   0  1                   [SECTOR TO BOTTOM 9 BITS 
3SK2          LDX   0  BSL5 
3T4L          SLL   0  15                  [CYLINDER TO TOP 9 BITS  
3TJ=          DLA   1  0
3W3W          EXIT  2  0
3WHG    QMCF
3X36          GEOERR   0,TYPE WRG   
3X4C ...#     SUBROUTINES (AT <4096) FOR BSTS   
3X5N ... LABFIX   XALTLEN   
3X6^ ...      ALTLEN   3,4  
3X8= ...      EXIT  5  0
3X9H ... LABFIX   XGETCHAP  
3X=S ...#SKI  JSKI10
3X#5 ...      GETCHAP  7
3X*B ...#SKI  JSKI10<1$1
3XBM ...      GETCHAP  5
3XCY ...      EXIT  3  0
3XF9 ...#   
3XGQ    #END
^^^^ ...15423011000800000000