{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: DOC867)}}
====== DOC867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:APPEND|APPEND]], [[george:macro:CLOSE|CLOSE]], [[george:macro:COMERR|COMERR]], [[george:macro:DCA|DCA]], [[george:macro:DOCON|DOCON]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETCOREN|GETCOREN]], [[george:macro:GSCAN|GSCAN]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LONGON|LONGON]], [[george:macro:LPROP|LPROP]], [[george:macro:LTYPE|LTYPE]], [[george:macro:MASK|MASK]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:NAME|NAME]], [[george:macro:OPEN|OPEN]], [[george:macro:PARANUMB|PARANUMB]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:PHOTO|PHOTO]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:TEST|TEST]], [[george:macro:TESTMOVE|TESTMOVE]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TRACE|TRACE]]
22FL #LIS K0DOC>K0ALLGEO>K0COMMAND
22^= #SEG DOC8 [A C PUTMAN
2394 ...# (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983.
23DW 8HDOC
23YG SEGENTRY K1DOC,XDOC1
24D6 #
24XQ # THIS SEGMENT DEALS WITH THE COMMAND DOCUMENT. THE PARAMETERS ARE
25CB # CHECKED AND IF CORRECT THE SYSTEM FILE DOCUMENT IS OPENED AND
25X2 # INFORMATION CONCERNING THE PERIPHERAL THAT HOLDS THE DOCUMENT IS
26BL # STORED AS A RECORD IN THIS FILE. THIS COMMAND IS USED FOR BASIC
26W= # PERIPHERALS IE. CARD READERS AND TAPE READERS.
27*W #
27TG MASK #77777
28*6 WSP #20202020
28SQ WHDR #50444462
29#B MSK1 #20000000
29S2 XOPN +16
2=?L 12HMASTER
2=R= 12HSYSTEM
2?=W +1
2?QG +1
2#=6 +0
2#PQ 12HDOCUMENT
2*9B +1
2*P2 +1
2B8L +0
2BN= SP #20000020
2C7W MAGIC +7036875
2CMG PLET [CHECK CH. TO BE A LETTER
2D76 LDCH 0 APARA(2)
2DLQ SBN 0 #41
2F6B BNG 0 PERR
2FL2 SBN 0 #73-#41
2G5L BPZ 0 PERR
2GK= EXIT 7 0
2H4W TMOR [INSERT SPACES IN REDUNDANT CH. POSNS
2HJG LDN 4 #20 [USES X4, AND REQUIRES PTR. TO NEXT
2J46 TEST TXL 3 MSK1(1) [CH. POSN. IN X3
2JHQ BCS NSP
2K3B DCH 4 0(3)
2KH2 BCHX 3 TEST
2L2L NSP
2LG= EXIT 7 0
2L^W XDOC1
2MFG # THIS ENTRY POINT PICKS UP THE NAME OF A DOCUMENT FROM A PARAMETER
2M^6 # BLOCK AND APPENDS IT TO A FILE TOGETHER WITH INFORMATION ABOUT THE
2NDQ # PERIPHERAL THAT IS 'DOCUMENT LOADED'
2NYB #SKI 99>K6DOC-99
2PD2 TRACE 1,INDOC1
2PXL PARANUMB 6 [NO. OF PARS. TO X6
2QC= BZE 6 NOPAR [J IF NONE THERE
2QWW GETCOREN 20,1 [CORE FOR RECORD
2RBG FINDCORE 3
2RW6 NAME 3,ADATA,ADOC
2S*Q STO 6 A1+1(3)
2STB SPARAPAS [GET DOC. NAME
2T*2 MHUNT 2,CPB,CUNI
2TSL LDX 4 ANUM(2)
2W#= BZE 4 NOPAR [DOC. NAME NULL
2WRW BNG 4 NOPAR
2X?G SRL 4 12 [GET PARAM. TYPE
2XR6 BZE 4 SIM1 [J IF SIMPLE: SHORT FORM
2Y=Q SBN 4 1
2YQB BZE 4 PSIM [J IF PSEUDO-SIMPLE: FULL FORM
2^=2 BRN PERR [OTHERWISE FORMAT WRONG
2^PL SIM1 LDX 4 ANUM(2)
329= ANDN 4 #7777
32NW SBN 4 13
338G BPZ 4 PERR [FORMAT ERROR IF DOC. NAME > 12 CHS.
33N6 CALL 7 PLET [CHECK 1ST CH. LETTER
347Q ADN 4 13 [X4 CONTAINS NO. OF CHS.
34MB BRN PINS
3572 PSIM LDCH 0 APARA(2)
35LL SBN 0 #12 [COLON
366= BNZ 0 PERR
36KW SMO FX2
375G STO 2 AWORK2
37K6 BCHX 2 £
384Q CALL 7 PLET [CHECK USER NAME BEGINS WITH LETTER
38JB LDN 5 12
3942 NXT BCHX 2 £
39HL LDCH 4 APARA(2)
3=3= SBN 4 #36 [STOP
3=GW BZE 4 NOMOR
3?2G BCT 5 NXT
3?G6 BRN PERR [ERROR IF MORE THAN 12 CHS. IN U.NAME
3?^Q NOMOR BCHX 2 £
3#FB CALL 7 PLET [DOC. NAME MUST START WITH LETTER
3#^2 SBN 5 28
3*DL SMO FX2
3*Y= LDX 2 AWORK2
3BCW LDX 4 ANUM(2)
3BXG ANDN 4 #7777
3CC6 ADX 5 4
3CWQ BPZ 5 PERR [ERROR IF DOC. NAME > 12 CHS.
3DBB PINS MHUNT 3,ADATA,ADOC
3DW2 STO 4 A1+2(3) [CT. OF NO. OF CHS.
3F*L SMO FX2
3FT= STO 3 AWORK1 [PRESERVE S.A. OF DOC. BLOCK
3G#W STO 2 5 [PRESERVE S.A. PARAM. BL.
3GSG ADN 2 APARA
3H#6 ADN 3 A1+3
3HRQ SMO 4 [X4 NON-ZERO: CHECKED EARLIER
3J?B MVCH 2 0
3JR2 CALL 7 TMOR [INSERT SPACES IF NECESSARY
3K=L SMO FX2
3KQ= LDX 2 AWORK1
3L9W SBX 3 2 [X3 CONTAINS PTR. TO POSN. IN BLOCK
3LPG SLL 3 12
3M96 LDN 0 #7777
3MNQ ANDS 0 A1+1(2) [KEEP NO. OF PARS.
3N8B ADS 3 A1+1(2)
3NN2 SBN 6 1
3P7L FREECORE 5 [FREE PARAM. BLOCK
3PM= BZE 6 ONEP [J IF NO MORE PARAMS.
3Q6W P1 PARAPASS [MODE OR TERM.
3QLG MHUNT 2,CPB,CUNI
3R66 LDX 4 ANUM(2)
3RKQ SRL 4 12 [GET PARAMETER TYPE
3S5B BZE 4 SIM2 [J IF SIMPLE
3SK2 SBN 4 1
3T4L BZE 4 SIM2 [J IF PSEUDO-SIMPLE
3TJ= BRN PERR [OTHERWISE ERROR
3W3W SIM2 LDX 4 ANUM(2)
3WHG BZE 4 NEXTP [J IF NULL
3X36 BNG 4 NOER
3XGQ ANDN 4 #7777
3Y2B MHUNT 3,ADATA,ADOC
3YG2 LDX 5 4
3Y^L ADN 5 3
3^F= SRL 5 2
3^YW NMOR LDX 7 A1+1(3) [X5 CONTAINS NO. OF EXTRA WDS. REQD.
42DG SRL 7 12 [PTR. TO NEXT FREE WD. IN DOC. BL.
42Y6 ADX 5 7
43CQ SBN 5 A1-3 [3 BECAUSE EXTRA WDS. FOR PERIPH.
43XB TXL 5 ALOGLEN(3) [INFORMATION,ETC.
44C2 BCS OK1 [J IF BLOCK LONG ENOUGH
44WL PHOTO 7
45B= ALTLEN 3,5,ADATA,ADOC [INCREASE LENGTH
45TW TESTMOVE 7,OK1 [J IF BLOCKS NOT MOVED
46*G MHUNTW 3,ADATA,ADOC [RE-LOCATE
46T6 OK1 MHUNT 2,CPB,CUNI [RE-HUNT BECAUSE X2=FX2
47#Q SMO FX2
47SB STO 3 AWORK1 [PRESERVE S.A. OF DOC. BL.
48#2 LDX 7 A1+1(3)
48RL SRL 7 12
49?= ADX 3 7 [X3 PTS. TO NEXT FREE POSN.
49QW STO 2 5 [PRESERVE S.A. PARAM. BL.
4==G STO 4 0(3) [NO. OF CHS. INSERTED
4=Q6 ADN 3 1
4?9Q ADN 2 APARA
4?PB SMO 4 [X4 NON-ZERO: CHECKED ABOVE
4#92 MVCH 2 0 [INSERT PAR. IN DOC. BL.
4#NL CALL 7 TMOR [INSERT SPACES IN REDUNDANT CH. POSNS
4*8= SMO FX2
4*MW LDX 2 AWORK1 [GET S.A. DOC.
4B7G SBX 3 2 [X3 GIVES PTR. TO NEXT FREE WD.
4BM6 SLL 3 12
4C6Q LDN 0 #7777
4CLB ANDS 0 A1+1(2) [KEEP NO. OF PARS.
4D62 ADS 3 A1+1(2)
4DKL FREECORE 5
4F5= BCT 6 P1 [J IF ANOTHER PARAM.
4FJW ONEP LDX 2 FX2
4G4G #SKI GENIE
4GJ6 (
4H3Q LTYPE ,5
4HHB SRC 5 9
4J32 DCA ,LDX,0,MODE [LD. MODE
4JGL DLA 0 5
4K2= LPROP ,6 [PROPERTY CODE
4KFW SRC 6 9
4K^G LGEOG ,0
4LF6 ADX 6 0
4LYQ )
4MDB #SKI GENIE<1$1
4MY2 (
4NCL LDX 5 CA1(2) [LD. MODE
4NX= LDX 6 CA5(2) [PROPERTY CODE / GEOG'S UNITNO./GEO,N
4PBW )
4PWG MHUNT 3,ADATA,ADOC
4QB6 STO 3 AWORK1(2) [PRESERVE S.A. DOC. BLOCK
4QTQ LDX 4 A1+1(3)
4R*B SRL 4 12 [X4 CONTAINS PTR. TO NEXT FREE WD.
4RT2 ADX 3 4
4S#L STO 5 0(3) [1ST PERIPH. WD.
4SS= STO 6 1(3) [2ND PERIPH. WD.
4T?W #SKI GENIE
4TRG ANDN 6 #777 [MASK OUT GEO. NO. (9 BITS)
4W?6 #SKI GENIE<1$1
4WQQ ANDN 6 #77 [MASK OUT GEO. NO. (6 BITS).
4X=B SBN 3 A1-2
4XQ2 SBX 3 AWORK1(2)
4Y9L SMO AWORK1(2)
4YP= STO 3 A1 [NO. OF WDS. IN REC. HEADER
4^8W TENG GETCOREN 16,1 [CORE FOR DOC. FILE NAME
4^NG FINDCORE 3
5286 NAME 3,FILE,FABSNB
52MQ ADN 3 A1
537B LDN 2 XOPN(1)
53M2 MOVE 2 16 [INSERT FILE NAME IN BLOCK
546L LDX 2 FX2
54L= OPEN OK,APPEND
555W TESTREP OPEN,OK2 [J IF FILE OPENED
55KG OK GEOERR 1,DOCFNOPN
5656 OK2 MHUNT 3,ADATA,ADOC
56JQ NAME 3,FILE,FAPB
574B PHOTO 7
57J2 APPEND
583L CLOSE
58H= TESTMOVE 7,OK3
592W MHUNT 3,FILE,FAPB
59GG OK3 LDX 4 A1+1(3)
5=26 TXU 4 WHDR(1)
5=FQ BCS NOMT
5=^B LONGON #61
5?F2 BRN ZFIN
5?YL NOMT LDX 2 A1+2(3) [LOAD NO. OF CHARS. IN DOC. NAME
5#D= ADN 2 7 [3 FOR ROUNDING,4 FOR PERIPH. WD.
5#XW SRL 2 2 [CONVERT TO WDS.
5*CG STO 6 A1+2(3) [STO GEOG. NO.
5*X6 GSCAN A1+2(3),DOCUMENT,0(2)
5BBQ #SKI GENIE
5BWB DOCON
5CB2 LONGON #60
5CTL ZFIN ACROSS LOGOUT,7
5D*= NEXTP FREECORE 2
5DSW BCT 6 P1 [J IF MORE PARAMS.
5F#G BRN ONEP
5FS6 NOER GEOERR 1,PARANUMX [PARANUM NO. NOT NO. OF PARS.
5G?Q PERR COMERR ADOCER,JDOCN
5GRB NOPAR COMERR JPARMIS,JDOCN
5H?2 MENDAREA 20,K99DOC
5HQL #END
^^^^ ...24341513000100000000