Initial revision
[h316.git] / lib / fortran / src / fpatch.asm
1 * (FPATCH) REV.B (6.2.2005)
2 *
3 *
4 * COMPUTER: H316
5 *
6 * PROGRAM CATEGORY: I/O LIBRARY
7 *
8 * PROGRAM TITLE: FPATCH
9 * FORTRAN COMPILER PATCH
10 *
11 *
12 * AUTHOR
13 *
14 * PHILIPP HACHTMANN
15 *
16 * REVISIONS
17 * REV. B (6.2.2005) ADDED CORRECT DATA POOL ENTRY MANIPULATION
18 *
19 * PURPOSE
20 *
21 * THIS PATCH IS TO ENABLE THE FORTRAN IV COMPILER TO USE THE
22 * O$LA AND O$LH SUBROUTINES
23 *
24 *
25 * RESTRICTIONS
26 *
27 * DEPENDS ON HACHTI'S HARDWARE AND FORTRAN IV COMPILER TAPE
28 *
29 *
30 * STORAGE
31 *
32 * 50 (OCTAL)
33 * 40 (DECIMAL)
34 *
35 *
36 * USE
37 *
38 * THE LIBRARY ROUTINES ARE FOR GENERAL PURPOSE.
39 * TO APPLY THE PATCH:
40 * - BOOT FRTN SYSTEM TAPE
41 * - LOAD O$LA AT LOCATION '20000
42 * - LOAD FPATCH SOMEWHERE ABOVE
43 * - RUN FROM FIRST LOCATION OF FPATCH
44 *
45 ********************************************************************************
46 SUBR FPATCH,PTCH ONLY FOR NAMING PURPOSES
47 ********************************************************************************
48 *
49 IOSB EQU '15036 IOS' BASE ADDRESS
50 IOSS EQU '36 INNER SECTOR OFFSET
51 PT1 EQU '611 FIRST FREELY USABLE ADDRESS IN IOS' SPACE
52 PT2 EQU '612 SECOND FREELY USABLE ADDRESS IN IOS' SPACE
53 PTE EQU '610 ADDRESS WHICH MUST BE FILLED WITH "V?"
54 PTS EQU '635 MESSAGE SIZE OF "DEVICE?" ERROR MESSAGE
55 JH EQU '173 ADDRESS OF CALL O$LH INSTRUCTION IN IOS
56 JL EQU '252 ADDRESS OF CALL O$LA INSTRUCTIIN IN IOS
57 DUM EQU '16612 DUMY OBJECT'S BASE ADDRESS
58 DPO EQU '16 ADDRESS OF ORIGINAL DUMY'S OWN BASE POINTER
59 *
60 JSTI EQU '121000 JST* INSTRUCTION
61 *
62 REL LET'S BEGIN RELATIVE
63 SUBR ENDPAL,FNS END OF THE IMPORTANT PART
64 REL RELATIVE MODE
65 ND1 *** **
66 *** **
67 *** **
68 *** **
69 ND2 *** **
70 *
71 *
72 ABS ABSOLUTE MODE
73 ORG '21000
74 PTCH NOP
75 LDX IOS ADDRESSES WILL BE RELATIVE TO IOS' BEGINNING
76 LDA OLHA O$LH ADDRESS (OK)
77 STA PT1,1 STORE TO POINTER LOCATION (OK)
78 LDA OLLA O$LA ADDRESS (OK)
79 STA PT2,1 STORE TO POINTER LOCATION (OK)
80 LDA VQ LOAD "V?" (OK)
81 STA PTE,1 REPAIR "DEV?" MSG (OK)
82 LDA ='-4
83 STA PTS,1 NEW MESSAGE SIZE (OK)
84 *
85 LDA JMP1 NEUER SPRUNG
86 STA JH,1
87 LDA JMP2
88 STA JL,1
89 **************
90 *
91 LDA ND2P ADDRESS OF NEW "DUMMY ROUTINE"
92 STA* DP STORE TO VARIABLE IN ORIGINAL DUMMY ROUTINE
93 LDA ND1P1
94 STA '100
95 AOA
96 STA '101
97 AOA
98 STA '102
99 AOA
100 STA '103
101 AOA
102 STA '104
103 AOA
104 STA '105
105 AOA
106 STA '106
107 AOA
108 STA '107
109 AOA
110 STA '110
111 AOA
112 STA '111
113 AOA
114 STA '112
115 *
116 **********
117 * READY
118 LDA OK LOAD OK
119 ICA
120 OCP '104
121 OTA 4
122 JMP *-1
123 ICA
124 OTA 4
125 JMP *-1
126 LDA CRLF
127 ICA
128 OTA 4
129 JMP *-1
130 ICA
131 OTA 4
132 JMP *-1
133 HLT
134 JMP *-1
135 *
136 **********
137 *
138 * KONSTANTEN
139 VQ BCI 1,V?
140 CRLF OCT 6412
141 OK BCI 1,OK
142 OLLA XAC O$LA
143 OLHA XAC O$LH
144 *
145 IOS DAC IOSB IOS BASE ADDRESS
146 DP DAC DUM+'52 "DP" VARIABLE ADDRESS
147 ND1P DAC ND1,1 NEW DUMMY ROUTINE'S BASE ADDRESS + INDEX BIT
148 ND2P DAC ND2 NEW DUMMY ROUTINE'S START ADDRESS
149 *
150 DUMB DAC DUM ORIGNAL DUMMY'S START ADDRESS
151 * POINTER USW
152 JMP1 DAC JSTI+PT1+IOSS
153 JMP2 DAC JSTI+PT2+IOSS
154 *
155 *******************************************************************************
156 *
157 *
158 * ORG '100
159 * DAC NDUM-4,1
160 * DAC NDUM-3,1
161 * DAC NDUM-2,1
162 * DAC NDUM-1,1
163 * DAC NDUM,1
164 * DAC NDUM+1,1
165 * DAC NDUM+2,1
166 * DAC NDUM+3,1
167 * DAC NDUM+4,1
168 * DAC NDUM+5,1
169 * DAC NDUM+6,1
170 *
171 * PUH.....
172 *
173 END