{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PROSTART867)}}
====== PROSTART867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BC|BC]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHNUMCOD|CHNUMCOD]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERR|COMERR]], [[george:macro:DOWN|DOWN]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:ENDPAXES|ENDPAXES]], [[george:macro:FINDPUC|FINDPUC]], [[george:macro:FJOCA|FJOCA]], [[george:macro:FPCACA|FPCACA]], [[george:macro:FREEALL|FREEALL]], [[george:macro:FREEBUFF|FREEBUFF]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREEPROG|FREEPROG]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GETWORD|GETWORD]], [[george:macro:HLSINFORM|HLSINFORM]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNT2J|HUNT2J]], [[george:macro:HUNT2OPT|HUNT2OPT]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JBC|JBC]], [[george:macro:LOADNOW|LOADNOW]], [[george:macro:LOCK|LOCK]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MONOUT|MONOUT]], [[george:macro:MURDER|MURDER]], [[george:macro:NAME|NAME]], [[george:macro:NOCORJOB|NOCORJOB]], [[george:macro:ORELP|ORELP]], [[george:macro:OUTBLOCK|OUTBLOCK]], [[george:macro:OUTPARC|OUTPARC]], [[george:macro:PAPARAM|PAPARAM]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:PROGAXES|PROGAXES]], [[george:macro:RUNPROG|RUNPROG]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:SWAPOUT|SWAPOUT]], [[george:macro:TESTLOAD|TESTLOAD]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTRT|TESTRT]], [[george:macro:TESTRTQ|TESTRTQ]], [[george:macro:TESTTP|TESTTP]], [[george:macro:UP|UP]], [[george:macro:VFREEW|VFREEW]], [[george:macro:WORDFIN|WORDFIN]]
228= ... SEG PROSTART,,CENT(LOAD OBJ PROG)
22BG ...[
22JQ ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
22R2 ...[
22^= #
23DW SEGENTRY K1PROSTART,XENT1
23YG SEGENTRY K2PROSTART,XENT2
24D6 SEGENTRY K5PROSTART,XENT5
24XQ SEGENTRY K9PROSTART,XENT9
25CB SEGENTRY K10PROSTART,XENT10
25X2 SEGENTRY K11PROSTART,XENT11
26BL SEGENTRY K16PROSTART,XENT16
26W= SEGENTRY K17PROSTART,XENT17
27*W #
27TG # THIS SEGMENT DEALS WITH THE ENTER AND RESUME COMMANDS AND IS
28*6 # ALSO USED TO DELETE A CORE IMAGE.
28SQ # ENTER USES ENTRY POINT K2,RESUME USES K5,DELETE USES K17
29#B # K1 IS USED TO COMPLETE THE LOADING PROCESS FOR
29S2 # A PROGRAM WHICH IS TO BE RUN IMMEDIATELY
2=?L # LOAD RE-ENTERS PROSTART AT
2=R= # K10 TO DELETE ANY PREVIOUS CORE IMAGE (UNDER THE SAME JOB)
2?=W #
2?QG #DEF XLDEXA=EXTPS+4
2#=6 #
2#PQ PMSB #20000000
2*9B PBIT9 #40000
2*P2 PBIT10 #20000
2B8L PBITS910 #60000
2BN= P1000 +1000
2C7W PK9 +K9
2CMG N48 48
2D76 #
2DLQ #
2F6B #
2FL2 #
2G5L XENT11 [LOGOUT ENTRY
2GK= #
2H4W HUNTW 1,APED,ADELETE
2HJG BNG 1 K10PROSTART
2J46 FREECORE 1
2JHQ BRN PNO1
2K3B #
2KH2 XENT10 [DELETION OF PREVIOUS CORE IMAGE
2L2L [FOR A NEW LOAD
2LG= #
2L^W VFREEW APED,ANEVENT
2MFG PNO1 VFREEW APED,ADISPLAY
2M^6 LDX 1 FX1
2NDQ #
2NYB XENT17 [ENTRY POINT FOR THE DELETE COMMAND,A
2PD2 [FROM OPCAXCOD FOR DEL,DELTY EXTRACOD
2PXL NGNC 0 1
2QC= XENT16 [ENTRY FROM LOAD TO DELETE PCA AFTER AN ERROR OR A
2QWW [BREAKIN DURING LOAD
2RBG [IN GEORGE 4 THE PROGRAM CAN BE BEING SWAPPED
2RW6 LDN 6 0
2S*Q BZE 6 PLOAD [J IF ERROR IN LOAD
2STB CALL 7 RLTIME [TEST FOR REALTIME
2T*2 ORX 6 GSIGN
2TSL PLOAD
2W#= #
2WRW FJOCA 3,FX2
2X?G LDX 4 BIT9 [J IF PROG ALREADY MARKED AS NOT
2XR6 ANDX 4 JMISC(3) [SWAPABLE
2Y=Q BNZ 4 PDEN [CURRENTLY THIS CASE DOES NOT OCCUR
2YQB LDX 4 BIT10 [J IF PROG SWAPPED IN
2^=2 ANDX 4 JMISC(3)
2^PL BNZ 4 PDEM
329= LDX 0 BIT11 [J IF PROG SWAPPED OUT
32NW ANDX 0 JMISC(3)
338G BNZ 0 PDEN
33N6 SWAPOUT [OTHERWISE PROG IS BEING SWAPPED SO
347Q BRN PDEN [WE WAIT UNTIL IT HAS FINISHED
34MB PDEM ADS 4 JMISC(3) [SWITCH TO NOT SWAPPABLE
3572 PDEN
35LL FPCACA 3,FX2
3H#6 TESTTP 3,TP [JUMP IF THE PROG IS AN RCTP
3HRQ BRN NTP
3J?B # UNSET RCTP MARKER AND MURDER PUC.PCA
3JR2 TP UNSETRCT 3
3K=L FPCACA 1,FX2
3K#T [
3KC4 [ NEED TO RENAME APET/ATP AS JUST APET AS AFTER APET/APUC MURDERED
3KF? [ CHARGESC MIGHT CALCULATE MILL RATINGS IF RECENTLY PLUGGED IN &
3KHG [ ASSUMES PUC STILL THERE
3KKP [
3KMY NAME 1,APET
3KQ= FINDPUC 1,3
3L9W LOCK 3
3Q6W MURDER 3 [FREE PUCS PCA
3QLG NTP
3T4L # FREE OBJ PROG BLOCK
3TJ= PWAIT
3W3W FJOCA 3,FX2
3WHG LDX 0 JMISC(3)
3X36 ANDX 0 PBITS910(1)
3XGQ BZE 0 PDEL1A [JUMP IF SWAPPED O4T
3Y2B PROGAXES 3,PWAIT [IF WE CANNOT ACCESS PROG. WAIT
3YG2 [AND THEN JUMP TO PWAIT
3Y^L FPCACA 1,FX2
42DG HUNT2OPT 1,AOBJPROG,0 [FREE OBJ PROG BLOCK
42LQ FREEPROG 1,3 [SET AOBJPROG UP AS VALID FPB
43CQ [PROG-BLOCK COMES BEFORE AN ACT.BLK.
43XB ENDPAXES 3 [SIGNAL END OF PROGRAM ACCESS
44WL PDEL1A
44Y^ [
44^Q [
452H [ IF VALID FPB EXISTS FOR THIS PROGRAM,THEN MAKE IT INVALID
453# [
4545 JBC NOFPB,3,JBWASIN [J IF NO VALID FPB
454W BC 3,JBWASIN
455M LDX 0 JOBNUM(3)
456D LDN 2 BOBJUNUSE
4579 NEXT LDX 2 FPTR(2) [GET FIRST/NEXT BLOCK ON FPB CHAIN
4582 BXE 2 CXOBJUN,(GEOERR) [GEOERR IF NO FPB WITH SAME JOBNUM
458R BXU 0 JOBNOWAS(2),NEXT
459J STOZ JOBNOWAS(2) [STOZ JOBNUM AS NOW INVALID FPB
45=* LDX 0 ALOGL(2)
45?6 ADS 0 CINVFPB [UPDATE TOTAL OF ONVALID FPB'S
45?X LDX 2 FX2
45#N NOFPB
45B= # FREE BACKING STORE
45TW FPCACA 3,2
46*G HUNT2J 3,BSTB,BSCB,,NODEL [JUMP IF NO SCB,SINCE NO
46T6 [SWAP SPACE WILL HAVE BEEN BOOKED
47#Q LDX 4 BSHEET(3) [TOTAL NO OF SHEETS FOR PROGRAM
47C* ...#UNS BIWRFL
47FY ...(
47JH ... BZE 4 NODEL [IF WRITE-FAIL MAYBE NO SHEETS
47M6 ... [TO FREE
47PP ...)
47SB ADN 4 2 [ALLOWANCE FOR THE HEADER
48#2 SETUPCORE 4,3,FILE,FRB [SET UP THE BACKING STORE LIST BLOCK
48RL FPCACA 2
49?= HUNT2 2,BSTB,BSCB
49QW STO 4 A1(3) [INSERT THE LENGTH OF THE LIST.
4==G LDX 4 AOBJLF(2)
4=Q6 STO 4 A1+1(3) [STORE LOGICAL FILE NO.IN BS LIST BLO
4?9Q LDX 5 BSHEET(2) [NO.OF SHEETS
4?PB STOW LDX 4 AOBJST(2) [THE FIRST O/P BLOCK ENTRY
4#92 STO 4 A1+2(3) [INSERT ENTRY IN LIST
4#NL ADN 2 1 [STEP X2 TO NEXT O/P BS HOME
4*8= ADN 3 1 [STEP X3- POINTER TO NEXT FREE WORD
4*MW BCT 5 STOW [ARE ALL THE O/P BS HOMES INSERTED?
4B7G FREEALL [FREE ALL THE SHEETS
4BM6 NODEL
4C6Q )
4CLB # RELEASE PERIPHERALS
4D62 CALL 5 PDEL
4DKL # MURDER PCA
4F5= LDX 4 3
4FJW FJOCA 3,2
4G4G TESTLOAD 3,NLOAD
4GJ6 LDXC 6 6 [NO DELETED MESSAGE UNLESS LOADED
4H3Q BCS £
4HHB NLOAD
4J32 LDCT 1 #767 [CLEAR PCACA BIT AND
4JGL ANDS 1 JMISC(3) [SET NO CORE IMAGE BEFORE
4K2= LDN 5 1 [MURDERING PCA
4KFW SBS 5 ACTPROGS [REDUCE COUNT OF PROGS
4K^G LDN 5 #1400
4LF6 ERS 5 CONTEXT(2)
4LYQ LOCK 4
4MDB ORELP 4 [CLOSES ANY FILES OPEN TO THE
4MY2 [PCA THEN MURDERS IT
4NCL LDXC 6 6
4NX= BCC PDEL2A [JUMP IF ERROR IN LOAD
4PBW # OUTPUT DELETED MESSAGE
4QB6 LDN 4 9 [PREPARE
4RT2 OUTBLOCK 4 [PREPARE MONOUT BLOCK
4S#L # OUTPUT MILL TIMES AND REAL TIME
4SS= OUTPARC JOBMILL,TIMENOW,PROGMILL
5286 MONOUT JXDELETED [OUTPUT DELETED MESSAGE
52MQ PDEL2A
52SY #SKI JWPHASE4
52YC HLSINFORM ZBREAKCONT,DELETE,JOBNO(2)
533W ZBREAKCONT
537B FJOCA 3,2
53M2 # SHORTEN JOB BLOCK
546L NGX 5 JCSIZE(3) [NEGATED CORE SIZE FOR R/T BUDGET UPD
54L= NOCORJOB 3 [RE-INITIALISE JOB-BLOCK
555W UP UP
55KG #
5656 P10B NGN 6 1 [SET RESUME WITH NO ENTRY POINT
56JQ BNZ 5 R15 [BRN TO RUN PROG IF RESUME
574B LDN 6 20 [GO AT 20 FOR ENTER
57J2 BRN PERRX [ WITH NO PARAMETER
583L #
58H= #
592W #
59GG XENT5 [ENTRY FROM RESUME
5=26 STOZ AWORK4(2) [ZEROISE LOADING MARKERS
5=FQ NGN 6 1 [IN CASE NO ENTRY POINT
5=^B LDN 5 1 [RESUME MARKER
5?F2 PARAPASS
5?YL MHUNT 3,CPB,CUNI
5#D= NGX 4 ANUM(3)
5#XW BPZ 4 P3X [NULL ROR NON EXISTENT
5*CG LDCH 0 APARA(3)
5*X6 SBN 0 #12 [:
5BBQ BZE 0 P2
5BWB SBN 0 #7 [!
5CB2 BZE 0 P2
5CTL SBN 0 #20
5D*= BNG 0 P3X
5DSW SBN 0 #32
5F#G BNG 0 P2 [A LETTER
5FS6 P3X
5G?Q # 1ST PARAM DOESN'T LOOK LIKE FILENAME - ASSUME IT IS A NUMBER
5GRB LDN 0 #1000
5H?2 ANDX 0 CONTEXT(2)
5HQL BZE 0 XNOCORE [NO CORE IMAGE
5J== BZE 4 R15 [NULL PARAM
5JPW BPZ 4 R151 [NO PARAMS
5K9G BRN P12
5KP6 P2
5L8Q # 1ST PARAM LOOKS LIKE FILENAME
5LNB MFREE CPB,CUNI
5M82 SPARANOT 1 [GET 1ST PARAM AGAIN WITH SPACES
5MML ACROSS LDSTART,7 [LOAD PROGRAM
5N7= #
5NLW #
5P6G #
5PL6 XENT1 [ENTRY FROM LOADPROG TO RUN THE PROGR
5Q5Q LDX 0 XLDEXA(2)
5QKB STO 0 AWORK4(2) [SAVE LOADING MARKERS
5R52 LOADNOW ZBRKIN,ZENDCOM,1 [LOAD THE PROGRAM
5RJL LDN 6 0 [ZEROISE MARKER
5S4= LDN 0 2
5SHW ANDX 0 AWORK4(2)
5T3G BZE 0 NOTLE [JUMP IF NOT LOADENTER
5TH6 PARAPASS
5W2Q MFREE CPB,CUNI [MARKS THE FIRST PARAMETER AS ACCESSE
5WGB NOTLE
5X22 LDX 0 BIT11
5XFL ANDX 0 AWORK4(2)
5X^= BNZ 0 XLOADED [JUMP IF GPL BECAUSE WE DO NOT NEED
5YDW [TO RESET WORD 8
5YYG LDN 0 4
5^D6 ANDX 0 AWORK4(2)
5^XQ BZE 0 NORM [JUMP IF NOT RESUME
62CB NGNC 5 1
62X2 NORM
63BL LDN 5 0 [LOADENTER MARKER
63W= BRN P10A
64*W XENT2 [ENTRY POINT FOR THE ENTER COMMAND
64TG STOZ AWORK4(2) [ZEROISE LOADING MARKERS
65*6 LDN 5 0 [ENTER MARKER
65SQ P10A PARAPASS [GET NEXT PARAM
66#B MHUNT 1,CPB,CUNI [FIND THE PARAMETER BLOCK
66S2 NGX 0 ANUM(1)
67?L BPZ 0 P10B [NULL OR NO PARAM.
67R= P12 CHNUMCOD
68=W TESTREP CHNUMERR,ZENDCOM [DID IT CONVERT OK?
68QG LDX 6 ACOMMUNE1(2)
69=6 ANDX 6 BITS22LS
69PQ BNZ 5 PERRX [BRN IF RESUME,ELSE
6=9B BNG 6 PERY [-'VE ENTRY POINT
6=P2 SBN 6 10 [CHECK ENTRY POINT
6?8L BNG 6 PERR
6?N= PERY
6#7W COMERR JENTER [ENTRY POINT INVALID
6#MG PERR ADN 6 30 [NOW IN RANGE 20-29
6*76 PERRX
6*LQ R15
6B6B PAPARAM XERR,XERR1
6BL2 R151 MFREE CPB,CUNI [FREE THE LAST PARAMETER BLOCK
6C5L #
6CK= R152
6D4W FJOCA 3,FX2
6DJG TESTLOAD 3,XLOADED [TEST IF LOADED
6F46 LOADNOW ZBRKIN,ZENDCOM,0 [LOAD THE PROGRAM
6FHQ STOZ AWORK4(2) [INITIALISE LOADING MARKERS
6G3B XLOADED
6GH2 HUNTW 2,APED,ANEVENT
6H2L BNG 2 RNO
6HG= FREECORE 2 [FREE EVENT BLOCK IF PRESENT
6H^W BRN RNO1
6JFG RNO VFREEW APED,ADELETE
6J^6 RNO1
6KDQ BNG 6 RNO2 [NO ENTRY PT GIVEN IN RESUME COMMAND
6KYB FPCACA 2,FX2
6LD2 LDCT 0 #340 [B1 STATE SL
6LXL ORS 0 ASU1(2)
6MC= ORS 0 ASU1(2)
6MWW ORS 0 ASU2(2)
6NBG ORS 0 ASU3(2)
6NW6 ORS 0 ASU4(2)
6P*Q ERS 0 ASU1(2) [TICKLE MEMBER 0
6PTB LDCT 0 #140
6Q*2 ERS 0 ASU2(2)
6QSL ERS 0 ASU3(2)
6R#= ERS 0 ASU4(2) [STATE SL FOR OTHER MEMBERS
6RRW LDX 0 BIT11
6S?G SMO FX2
6SR6 ANDX 0 AWORK4
6T=Q BNZ 0 RNO2 [JUMP IF GPL
6TQB # THE START OF THE PROGRAM MUST BE BROUGHT INTO CORE TO SET WDS 8,9
6W=2 LDX 5 ANM(2)
6WPL ANDN 5 3 [CURRENT MEMBER NO.
6X9= ERS 5 ANM(2) [SET CURRENT MEMBER TO 0
6XNW SLL 5 4
6Y8G ADN 5 32+16 [X5 CONTAINS SIZE OF AREA TO BE REFER
6YN6 LDN 4 0 [
6^7Q GETWORD 4,1,WRITE,4,5 [ADDR OF 1ST [5] WDS OF PROGRAM
6^MB TESTREPN OK,XGETWD
7272 # IF LAST MEMBER RUN WAS NOT 0 WE MUST DUMP ITS ACCS ETC AND RESTART IN
72LL SMO FX1
736= TXU 5 N48
73KW BCC RNO3 [J IF LAST MEMBER RUN WAS 0
745G LDX 2 1
74K6 ADX 2 5
754Q SBN 2 16 [X2 IS START OF DUMP AREA FOR LAST ME
75JB MOVE 1 16 [DUMP THIS MEMBERS WORDS 0-15
7642 LDX 5 1
76HL LDN 4 32(1)
773= MOVE 4 16 [MEMBER 0'S WORD RESTORED
77GW RNO3 STO 6 8(1) [INSERT ENTRY POINT
782G STOZ 9(1) [ZEROISE REPLY WORD
78G6 WORDFIN
78^Q XENT9
79FB RNO2 FJOCA 3,FX2
79^2 LDX 4 APROGTIME(3)
7=DL BNG 4 RMORE
7=Y= BNZ 4 RNOMORE
7?CW LDX 4 APROGTIME+1(3)
7?XG BNZ 4 RNOMORE
7#C6 RMORE
7#WQ LDX 4 IPROGTIME
7*BB SMO FX1
7*W2 MPY 4 P1000 [CONVERT PROG TIME TO MILLISECONDS
7B*L STO 4 APROGTIME(3)
7BT= STO 5 APROGTIME+1(3)
7C#W RNOMORE
7CDR LDX 2 FX2
7CFJ #UNS FREEBUFF
7CG* (
7CH6 FREEBUFF [ FREEBUFF CPAT
7CHX )
7CJN #SKI JWPHASE4
7CNK HLSINFORM ZBRKIN,RESUME,JOBNO(2)
7CSG RUNPROG
7D#6 #
7DRQ ZBRKIN
7F?B COMBRKIN [BREAK-IN DETECTED DURING
7FR2 [LOADNOW(X) MACRO
7G=L ZENDCOM
7GQ= ENDCOM [TO THE COMMAND PROCESSOR IF THE
7H9W # [RESUME OR LOADENTER COMMAND HAS FAIL
7HPG # THIS SUBROUTINE DEALS WITH REALTIME PROGRAMS
7J96 RLTIME
7JNQ LDN 6 0
7K8B FJOCA 3,FX2
7KN2 TESTRT RT2,3 [HAS REALTIME BEEN EFFECTED?
7L7L TESTRTQ RT1,3 [IS REALTIME SET?
7LM= EXIT 7 0 [NOT REALTIME PROGRAM
7M6W RT1
7MLG RT2 SBX 7 FX1
7N66 CALL 5 PDEL [RELEASE PERIPHERALS
7NKQ DOWN REALTIME,3
7P5B ADX 7 FX1
7PK2 EXIT 7 0
7Q4L #
7QJ= # THIS SUMR RELEASES ALL THE PROGRAMS PERIPHERALS
7R3W #
7RHG PDEL SBX 5 FX1
7S36 PDEL1 FPCACA 3,FX2
7SGQ HUNT2 1,APERI,APERIRES,3
7T2B LDX 0 A1(1)
7TG2 BNG 0 PDELF
7T^L RELPEREN 0
7WF= BRN PDEL1
7WYW PDELF ADX 5 FX1
7XDG EXIT 5 0
7XY6 #
88PB #
8992 #
89NL XERR COMERR APFERR
89YD XERR1 COMERR JMAXPAR
8=8= XNOCORE
8=MW COMERR JCONTINC,JNOCOR
8?7G XGETWD
8?M6 GEOERR 1,GETWORD
8#6Q MENDAREA 30,K99PROSTART
8#LB #END
^^^^ ...73414344000100000000