{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: DATUM)}}
====== DATUM ======
(George Source)
**Macros used:** [[george:macro:ALTLEN|ALTLEN]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETCHAP|GETCHAP]], [[george:macro:JENVNOT|JENVNOT]], [[george:macro:JNENVX|JNENVX]], [[george:macro:LABFIX|LABFIX]]
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