{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: SAVE864)}}
====== SAVE864 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BS|BS]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSEABANDON|CLOSEABANDON]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERRX|COMERRX]], [[george:macro:CREATEB|CREATEB]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FPCACA|FPCACA]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETWORD|GETWORD]], [[george:macro:GETWORDX|GETWORDX]], [[george:macro:HUNT2|HUNT2]], [[george:macro:LOADNOW|LOADNOW]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:READY|READY]], [[george:macro:REPERR|REPERR]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:STEP|STEP]], [[george:macro:TESTLOAD|TESTLOAD]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:TRANSBEG|TRANSBEG]], [[george:macro:TRANSFIN|TRANSFIN]], [[george:macro:USEROPEX|USEROPEX]], [[george:macro:VFREEW|VFREEW]], [[george:macro:WHATBACK|WHATBACK]], [[george:macro:WORDFIN|WORDFIN]], [[george:macro:WRONG|WRONG]]
22FL #LIS K0SAVE>K0ALLGEO>K0COMMAND
22^= ...#SEG SAVE70 [OWEN N JOHN :CENT
23DW 8HSAVE
23YG #
24D6 # THIS SEGMENT SAVES A PROGRAM IN A LOADABLE FORM WITH ITS SUPPLEMENT
24XQ # REQUEST SLIP SUCH THAT THIS SAVED PROGRAM CAN BE LOADED,RESUMED OR
25CB # RESTORED AT A LATER DATE
25X2 #
26BL SEGENTRY K1SAVE,XK1 [COMMAND ENTRY
26LD ... FSHENTRY K2SAVE,WHATBK,,WHATBK [ TO DO 'WHATBACK' FOR M/C 'B'
26W= #
27*W # THIS SUBROUTINE DOES A QUICK STEP APPEND
27TG # IT EXPECTS X4 TO CONTAIN WORD COUNT ON ENTRY LINK X5,
28*6 #
28SQ YWRIT SBX 5 FX1
29#B LDX 1 4
29S2 STEP ,0(1),VBIN [->VBIN IF BREAK IN
2=?L TESTREP2 FILEFULL,ODEAR [J IF NO MORE ROOM
2=R= #SKI BSOL
2?=W TESTREP2 REFUSED,RUNOUT [J IF NO BS LEFT
2?QG STO 4 FRH(3)
2#=6 LDN 0 #41
2#PQ STO 0 FRH+1(3) [STORE PFCC
2*9B ADX 5 FX1
2*P2 EXIT 5 0
2B8L NXTP SBX 7 FX1 [FIND NEXT PARAMETER
2BN= SPARAPAS
2C7W MHUNT 2,CPB,CUNI
2CMG LDX 0 ANUM(2)
2D76 ADX 7 FX1
2DLQ EXIT 7 0
2F6B #
2FL2 PLOAD 4HLOAD
2G5L TYPE #73230000
2GK= TEB #73030003
2H4W TES #73100006
2HJG TURTY #74000 [MAX.RECORD SIZE 30K
2J46 TYPE2 #73020002 [FIRST WORD OF ENTRY BLOCK
2JHQ #
2K3B XK1 [ENTRY POINT
2KH2 CALL 7 NXTP [GET FILENAME PARAMETER
2L2L BNG 0 S1 [ERROR IF ABSENT
2LG= NAMETOP 2,FILE,FNAME
2L^W CREATEB [CREATE FILE OPENING BLOCK
2MFG CALL 7 NXTP [GET NEXT PARAMETER
2M^6 BNG 0 R5 [ASSUME DA IF MISSING
2N8Y ... BZE 0 R5 [ OR NULL
2NDQ LDCH 7 APARA(2) [TEST FOR ASTERISK
2NYB SBN 7 #32
2PD2 BNZ 7 S2 [ERROR IF NOT
2PXL ANDN 0 #7777 [REMOVE TYPE
2QC= BRN R3
2QWW #
2RBG # ROUTINE CONDENSES CHARACTERS FOLLOWING ASTERISK
2RW6 R2 BCHX 2 £
2S*Q LDCH 6 APARA(2) [LOAD NEXT CHARACTER
2STB SBN 6 #20
2T*2 BZE 6 R3 [IGNORE IF SPACE
2TSL SLL 7 6
2W#= ORX 7 6
2WRW R3 BCT 0 R2
2X?G # TEST IF *CP OR *DA
2XR6 LDN 5 0
2Y=Q SBN 7 #2340 [CP?
2YQB BZE 7 R6
2^=2 SBN 7 #61 [DA?
2^PL BNZ 7 S2 [ ERROR
329= R5
32NW LDN 5 1 [EDS FILE MARKER
338G R6
33N6 # NOW CHECK IF LOADED: TO ENSURE PICK UP MEANINGFUL INFORMATION
347Q LDX 2 FX2
34MB FJOCA 2 [FIND JOBBLOCK
3572 TESTLOAD 2,READY [J IF OOADED
35LL LOADNOW R9,THEND,0 [LOAG IF,LEAVING SO/
366= READY
36KW LDX 2 FX2
375G MHUNTW 3,FILE,CREATE [FIND CREATE BLOCK
37K6 FPCACA 1,2
384Q #SKI G3
38JB (
3942 LDX 4 ALIMIT(1)
39HL ADN 4 1024 [ALLOW EXTRA 1K FOR RED TAPE
3=3= SRL 4 9 [NO OF BS BLOCKS REQD
3=77 ... LDN 0 FILESIZE
3=?4 ... TXL 0 4
3=B^ ... BCS WOOPS
3=GW )
3?2G #SKI G4
3?G6 (
3?^Q HUNT2 2,BSTB,BSCB,1
3#FB LDX 4 AASIZE(2) [PAGES ACCESSED
3#^2 LDN 0 FILESIZE/2 [MAX SIZE OF FILE IN K
3*DL TXL 0 4
3*Y= BCS WOOPS [J IF TOO BIG
3BCW LDX 6 AMAXSIZE(2) [KEEP SIZE WORD
3BXG )
3CC6 BNZ 5 R7
3CWQ LDX 0 GSIGN
3DBB ADN 0 #12 [SET AS GRAPHIC
3DFG ... STO 0 CETM(3)
3DJL ...[
3DMQ ...[ THE FOLLOWING 'BS' WAS INSERTED AT THE REQUEST OF
3DQW ...[ :FILE SECTION SUPPOSEDLY IT STOPS ERRONOUS
3DW2 ...[ 'FILE FULL' MESSAGES WITH WORKFILES
3D^6 ...[ DONE 16.JAN.75 :CENT
3F4= ...[
3F7B ... BS 3,CESERIAL
3F=G ...[
3F*L SETMODE 4,CREATE,APPEND,EMPTY
3FT= BRN R8
3G#W # NOW FIND HOW MANY 128 WORD BUCKETS WILL BE REQUIRED AT MOST
3GSG R7
3H#6 #SKIP G4
3HRQ (
3J?B ADN 4 1 [FIRST 8 BUCKETS
3JR2 SLL 4 1 [ROUND TO BS BLOCKS
3K=L )
3KQ= STO 4 CEINF3(3)
3L9W LDCT 0 #406
3LPG STO 0 CETM(3)
3M96 LDN 0 1 [BUCKET SIZE
3MNQ STO 0 CEORG(3)
3MQN ...WHATBK
3MSL ... FSHCODE B,NOTIFMCA
3MWJ ...(
3MYG ... TRANSBEG FSHSAVEID,SAVE,2,FILE,CREATE,ACOMMUNE1
3N2D ... BRN WHATBDONE
3N4B ...NOTIFMCA
3N6# ...)
3N8B WHATBACK 0,4
3N=K ...WHATBDONE
3N#S ... FSHCODE A,NOTIFMCB
3NC3 ...(
3NF= ... TRANSFIN ,,ALIEN
3NHF ...NOTIFMCB
3NKN ...)
3NN2 SETMODE 4,CREATE,WRITE,EMPTY
3P7L R8
3PM= USEROPEX R9,4
3Q6W REPERR T1 [OPEN FILE & TEST REPLY
3QLG THEND
3R66 ENDCOM
3RKQ VBIN
3S5B CLOSEABANDON
3SK2 R9 COMBRKIN [BREAK IN USEROPEN
3T4L T1
3TJ= BNZ 5 N0 [BRANCH IF EDS
3W3W P1
3WHG LDN 4 3
3X36 CALL 5 YWRIT [X3 -> POS FOR RECORD
3XGQ LDX 0 PLOAD(1)
3Y2B STO 0 2(3)
3YG2 #SKI G4
3Y^L (
3^F= # SET ALL ACCESSES
3^YW LDN 5 CHUSED+CHREAD+CHWRITEP+GNOMESS
42DG STO 5 AWORK3(2)
42Y6 )
43CQ STOZ 5
43XB GETWORD 5,7,READ,AWORK1(2),,VBIN [X7 -> WORD 0 OF F/P
44C2 TESTREP NOCORE,ZERR [BRANCH IF NO CORE IMAGE
44WL TESTREP2 LOADERR,Y8
45B= LDN 4 18
45TW CALL 5 YWRIT
46*G Z8 FPCACA 2,FX2 [FIND PCA
46T6 LDX 4 ARM1(2)
47#Q SRL 4 3
47SB ANDN 4 7
48#2 SMO FX2
48RL STO 4 AWORK2
49?= LDX 4 ALIMIT(2) [REMEMBER CORE SIZE
49QW #SKI G4
4==G (
4=Q6 SMO FX2
4?9Q STO 4 AWORK4 [KEEP ALIMIT HANDY FOR CHECK LATER
4?PB LDX 4 6
4#92 SLC 4 12
4#NL BPZ 6 UNSP [J IF NOT SPARSE
4*8= SBN 4 #3776
4*MW UNSP SLC 4 7 [X4 HAS CORE WORD FOR RES SLIP
4B7G )
4BM6 #SKI G3
4C6Q SLC 4 9
4CLB Z7 HUNT2 2,AOBRES,0 [FIND REQUEST SLIP
4D62 LDN 5 A1(2)
4DKL LDN 6 2(3)
4F5= LDX 1 A1(2)
4FJW SRL 1 12
4G4G ANDN 1 #77 [LENGTH OF REQUEST SLIP
4GJ6 MOVE 5 16
4H3Q STO 4 5(3) [PRESENT CORE SIZE
4HHB SUM 5 0(1) [FORM CHECKSUM OF W+1 WDS
4J32 SBS 5 15(3) [... OF W
4JGL SMO FX2
4K2= LDX 6 AWORK2
4KFW LDX 1 FX1
4K^G LDN 0 17
4LF6 TXL 0 ALOGLEN(2)
4LYQ BCS Q1 [JUMP IF SRS
4MDB BZE 6 Q2
4MY2 Q1 LDN 4 10
4NCL CALL 5 YWRIT
4NX= STOZ 2(3)
4PBW LDN 4 2(3)
4PWG LDN 5 3(3)
4QB6 MOVE 4 7
4QTQ LDX 0 TES(1)
4R*B STO 0 2(3)
4RT2 STO 6 3(3) [STORE MODES
4S#L LDN 6 2(3)
4SS= SUM 5 7 [CHECKSUM
4T?W NGS 5 9(3) [STORE CHECKSUM
4TRG Q2
4W?6 LDX 2 FX2
4WQQ STOZ EXTPS+2(2)
4X=B SMO 7
4XQ2 LDX 4 8 [WORD 8 OF OBJECT PROGRAM
4Y9L STO 4 EXTPS+4(2)
4YP= Z6 STOZ EXTPS+3(2) [CLEAR TEMP COUNT
4^8W Z5
4^NG LDX 1 7 [ADDRESS OF WORD 0 OF O/P TO X1
5286 SMO EXTPS+3(2)
52MQ LDN 6 0(1)
537B SUM 5 16 [CHECKSUM
53M2 BNZ 5 Z2 [J IF NOT ALL ZERO
546L LDN 1 16
54L= Z3 SBN 6 1
555W SMO 6
55KG LDX 4 0(1)
5656 ADN 6 1
56JQ BNZ 4 Z2
574B BCT 1 Z3
57J2 BRN Z4
583L Z2 LDN 4 21
58H= CALL 5 YWRIT [X3 -> POS FOR RECORD
592W LDX 0 TYPE(1)
59GG STO 0 2(3) [SET TYPE WORD
5=26 LDX 5 6 [X5 -> RECORD
5=FQ LDN 6 4(3)
5=^B MOVE 5 16 [MOVE IT IN
5?F2 LDX 2 FX2
5?YL LDX 0 EXTPS+2(2) [DESTINATION ADDRESS
5#D= STO 0 3(3) [STORE DESTINATION
5#XW SBN 6 2
5*CG SUM 5 18
5*X6 NGS 5 20(3) [SET CHECKSUM
5BBQ Z4 LDN 5 16 [UPDATE
5BWB ADS 5 EXTPS+2(2) [UPDATE DESTINATION ADDRESS
5CB2 ADS 5 EXTPS+3(2) [UPDATE TEMP COUNT
5CTL LDX 5 EXTPS+3(2) [GET TEMP COUNT
5D*= TXL 5 AWORK1(2) [BRANCH IF NOT
5DSW BCS Z5 [END OF THIS BLK
5F#G #SKI G3
5FS6 GETWORD EXTPS+2(2),7,READ,AWORK1(2)
5G?Q #SKI G4
5GRB (
5H?2 NTUS
5HQL LDX 0 EXTPS+2(2)
5J== TXL 0 AWORK4(2)
5JPW BCC Z4B [J IF REACHED ALIMIT
5K9G # WE CHECK FOR SPAS BY ASKING FOR ALL MODES OF ACCESS IN GETWORD
5KP6 # TILL RESVIOL REPLY,WHEN WE O/P WARNING & CHANGE TO READ AND
5L8Q # USED ONLY
5LNB # IF SPA FOUND ,WE O/P WARNING MESSAGE & ASK FOR SUBSET
5M82 # FROM THEN ON
5MML XGW GETWORDX EXTPS+2(2),7,AWORK3(2),AWORK1(2)
5N7= TESTRPN2 RESVIOL,NOSPA
5NLW VFREEW ADATA,ERREPLY
5P6G MONOUT HSPASV [WARNING MESSAGE
5PL6 LDN 5 CHUSED+GREAD
5Q5Q STO 5 AWORK3(2)
5QKB BRN XGW
5R52 NOSPA
5RJL )
5S4= TESTREP2 OK,Z6 [J IF NOT FINISHED
5SHW #SKI G4
5T3G (
5TH6 TESTRPN2 NOTUSED,Z4B [FINISH IF NOT NOTUSED REP
5W2Q ... VFREEW ADATA,ERREPLY
5WGB LDX 0 AWORK1(2)
5X22 ADS 0 EXTPS+2(2) [UPDATE DEST PTR
5XFL BRN NTUS [RETURN FOR ALIMIT CHECK
5X^= )
5YDW Z4B
5YYG LDN 4 5
5^D6 CALL 5 YWRIT [GET POINTER
5^XQ LDX 5 TEB(1)
62CB STO 5 2(3) [ENTRY BLOCK TYPE
62X2 LDX 5 EXTPS+4(2)
63BL ANDX 5 BITS22LS
63W= STO 5 3(3) [ENTRY POINT
64*W ADX 5 TEB(1)
64TG NGS 5 4(3)
65*6 Y3
65SQ LDN 6 0 [SET TO OBTAIN FIRS ENTRY
66#B Y4
66S2 FPCACA 2,FX2
67?L HUNT2 3,APERI,APERIRES,2
67R= SMO 6
68=W LDX 4 A1(3) [NEXT PRB ENTRY
68QG BNG 4 Y7 [BRANCH IF NO MORE PERIPHERALS
69=6 OUTPACK 4,1,PERINAME [PERIPHERAL NAME -> OUTPUT BLOCK
69PQ MONOUT JSAVE
6=9B BDX 6 Y4 [BACK FOR NEXT.
6=P2 Y7 WORDFIN [MARK PROGRAM AS SWAPPABLE
6?8L Y8
6?N= CLOSE [CLOSE THE FILE
6#7W ENDCOM [FINISH
6#MG N0
6*76 ACROSS SAVEDA,1 [GO TO SAVE TO DA
6*LQ RUNOUT
6B6B CLOSEABANDON
6BB8 ... WORDFIN
6BL2 CALL 3 WRONG
6C5L +EREXQUOTA
6CK= -1
6D4W S1 CALL 3 WRONG
6DJG +JPARMIS
6F46 +JFNAME
6FHQ S2 CALL 3 WRONG
6G3B +ERRPERC
6GH2 -1
6H2L ODEAR CLOSEABANDON [LEAVE FILE AS IT WAS
6HG= WORDFIN [SIGNAL END OF GETWORDS
6H^W WOOPS CALL 3 WRONG
6JFG +BIGSV
6J^6 -1
6KDQ WRONG COMERRX 0(3),1(3) [O/P ERROR & RETURN TO COM PRO
6KYB ZERR GEOERR 1,NOIMAGE [NO CORE IMAGE
6L9Q ...
6LH6 ...[
6LSG ... MENDAREA 30,K100SAVE
6M5W ...[
6MC= #END
^^^^ ...47767313000100000000