1
0
mirror of https://github.com/pkimpel/retro-220.git synced 2026-03-28 02:33:21 +00:00

Commit BALGOL compiler transcription WIP as of 2016-12-18.

Provide link to MIT license text on home page.
This commit is contained in:
Paul Kimpel
2016-12-18 15:25:07 -08:00
parent 0a66daa33a
commit c508dfd34a
3 changed files with 710 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
MIT License
Copyright (c) 2016 Paul Kimpel
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights

View File

@@ -66,10 +66,10 @@
<p>&nbsp;
<div id=footerDiv>
Copyright (c) 2016, Paul Kimpel &bull; Licensed under the MIT License
Copyright (c) 2016, Paul Kimpel &bull; Licensed under the <a href="LICENSE.txt">MIT License</a>
</div>
<div id=lastModDiv>Revised
2016-12-03
2016-12-17
</div>
</p>

View File

@@ -3386,6 +3386,711 @@
033 90 0 3123 STP ASMBX DOUBLE-INDEXING IF V1 IS AN ARRAY
033 91 0 3124 BUN ASMBY
033 92 0 3125 STB V1,11
033 93 0 3126 *T CAD DOT MLTIPLY V2.V2
033 93 0 3126 *T CAD DOT MULTIPLY V2.V2
033 94 0 3127 STA OPRTN
033 95 0 3128 BUN GENAG
033 96 0 3129 NUTBL CNST $FX*FX$
033 97 0 3130 CNST $FX*FL$
033 98 0 3131 CNST $FL*FX$
033 99 0 3132 CNST $FL*FL$
034 02 0 3133 GABSF STP TSTOX ABSOLUTE VALUE.
034 03 0 3134 BUN TSTOP LOOK SEE IF ITS -ABS
034 04 0 3135 LDB *+3
034 05 0 3136 LDR V1
034 06 0 3137 BFR *+2,11,0 V1 IN MEMORY, ABS CAA V1
034 07 0 3138 DBB LSA0,LSA0-CAAV1 V1 IN MEMORY,-ABS CSA V1
034 08 0 3139 BCU *+2 V1 IN ACCUM, ABS LSA 0
034 09 0 3140 DBB 0,9999 V1 IN ACCUM, -ABS LSA 1
034 10 0 3141 STP ASMBX
034 11 0 3142 BUN ASMBZ
034 12 0 3143 BUN GENXK
034 17 0 3144 GHYPH LDB OPRND MINUS OPERATOR
034 18 0 3145 EX43 CNST 10013110000 SIMPLY REVERSE SIGN DIGIT OF
034 19 0 3146 STA - 0 NEXT ITEM IN OPERAND STACK
034 20 0 3147 BUN GENRX
034 23 0 3148 GBNOT LDR V1 BOOLEAN NOT.
034 24 0 3149 CAD G7
034 25 0 3150 BFR GEN4,22,01
034 26 0 3151 STP ACCX IF V1 NOT IN A-REGISTER.
034 27 0 3152 BUN ACC4 STORE A-REGISTER IF NECESSARY
034 28 0 3153 CAD V1
034 29 0 3154 BSA E+,1 CHECK THAT V1 IS BOOLEAN
034 30 0 3155 BFA E+,21,0
034 31 0 3156 *F CAD G11 CAD =1=, SUB V1.
034 32 0 3157 GEN4 STP INTRX
034 33 0 3158 BUN INTRP
034 34 0 3159 BUN GENXK IF V1 IS IN THE ACCUMULATOR,
034 35 0 3160 *E STP WEMX SUB=1=, LSA 0
034 36 0 3161 BUN WEM,F-
034 37 0 3162 CNST 30159610000 IMPROPER BOOLEAN OPERAND
034 40 0 3163 GIF LDR BZAFR IF AND UNTIL
034 41 0 3164 GIF1 STR T+
034 42 0 3165 CAD V1
034 43 0 3166 BFA E+,21,0 CHECK V1 BOOLEAN
034 44 0 3167 BSA E+,1
034 45 0 3168 *A STP CADX BRING IT INTO A REGISTER
034 46 0 3169 BUN CAD1
034 47 0 3170 STP ASMBX ASSEMBLE BFA FORWARD,01,0 (IF)
034 48 0 3171 BUN ASMBL,T+ OR BFA FORWARD,01,1 (UNTIL)
034 49 0 3172 BUN GREL1 MAKE COMPOUND STATEMENT
034 50 0 3173 *E STP WEMX
034 51 0 3174 BUN WEM,A-
034 52 0 3175 CNST 30159610000 IMPROPER BOOLEAN OPERAND
034 53 0 3176 *T HLT 0
034 56 0 3177 GPCS STP ACCX PCS GENERATOR
034 57 0 3178 BUN ACC4 FREE A REGISTER
034 58 0 3179 STP FIXEX BRING V1 FIXED POINT INTO A
034 59 0 3180 BUN FIXER UNLESS ITS A CONSTANT
034 60 0 3181 BFA A+,11,2 THEN GENERATE SLA 0009
034 61 0 3182 CAD +6034037172 STA *+2,11
034 62 0 3183 BUN GEN4 CAD +1
034 63 0 3184 *A DLB V1,64,00 BCS *+2,0
034 64 0 3185 CAD - 1 CLA
034 65 0 3186 SLA 9 OR IF IT WAS A CONSTANT GENERATE
034 66 0 3187 STA BCSL2,11 MERELY THE LAST THREE OF THESE
034 67 0 3188 CAD +0371720000
034 68 0 3189 *B BUN GEN4
034 71 0 3190 GSIGN STP TSTOX SIGN(V1)
034 72 0 3191 BUN TSTOP
034 73 0 3192 STP CADX BRING V1 INTO A-REGISTER
034 74 0 3193 BUN CAD1
034 75 0 3194 SRT 10 GENERATE BZA *+4
034 76 0 3195 CAD +4959045600 SRT 0
034 77 0 3196 BFR B+,21,0 CAD =1.0= OR =1=
034 78 0 3197 CAD +4959035600 SLT 0
034 79 0 3198 GEN5 DEFN *
034 80 0 3198 *B STP INTRX
034 81 0 3199 BUN INTRP
034 82 0 3200 BUN GENXV
034 85 0 3201 GFRWF STP FXUPX FIX UP FORWARD REFERENCE
034 86 0 3202 BUN FXUP
034 87 0 3203 BUN GENRX
034 90 0 3204 GBWRF DLB OPRTN,64,00 BUN TO BACKWARD REFERENCE
034 91 0 3205 STB BUNI,04
034 92 0 3206 CAD BUNI
034 93 0 3207 BUN GENXY
034 95 0 3208 GCRA STP REMX,OPRND OBTAIN V1.
034 96 0 3209 BUN REM,*+2
034 97 0 3210 BUN GENRX
034 98 0 3211 STA V1
034 99 0 3212 CLL SER BRANCH TO GCRJ(INPUT) OR GCRK(OUTPUT)
035 00 0 3213 DLB STSV,64,0
035 01 0 3214 BUN - 0
035 03 0 3215 GCRB DLB DELTA,22,0 = OPERATOR
035 04 0 3216 DBB GREL2,1 OR DID HE MEAN EQL
035 05 0 3217 DLB V2,64,0
035 06 0 3218 LDR - 0
035 07 0 3219 STR TS001,34
035 08 0 3220 CAD V2
035 09 0 3221 BSA Z+,1
035 10 0 3222 STR V2
035 11 0 3223 STA V2,00
035 12 0 3224 LDB OP
035 13 0 3225 CAD - 0
035 14 0 3226 CFA CRB,64 CHECK FOR MULTIPLE ASSIGNMENT
035 15 0 3227 BCE A+ OR A FOR STATEMENT, WHERE WE
035 16 0 3228 LDB MODE CANT DO STR INSTEAD OF STA
035 17 0 3229 CAD - 0
035 18 0 3230 CFA FORMD,64
035 19 0 3231 BCU *+3
035 20 0 3232 IFL OMEGA,00,1
035 21 0 3233 *A CLL XI
035 22 0 3234 CAD V2 LEFTHAND OPERAND CANNOT BE
035 23 0 3235 BFA Z+,11,9 A LABEL, ACCUMULATOR SYMBOL
035 24 0 3236 BFA *+3,11,1 CONSTANT, TEMP STORAGE
035 25 0 3237 CFA *+1,11 OR A LIBRARY PROCEDURE
035 26 0 3238 F424 5001,34,Z+
035 27 0 3239 CAD V1
035 28 0 3240 BFA S+,21,3 (CLL IN MULTIPLE ASSIGNMENT)
035 29 0 3241 BFA A+,11,2 IS RHS A CONSTANT.
035 30 0 3242 *V STP CADX IF NOT, GET RHS INTO ACCUMULATOR
035 31 0 3243 BUN CAD1
035 32 0 3244 LDR V2
035 33 0 3245 CFR V1,21
035 34 0 3246 STR V1,21 DO THE TYPES AGREE
035 35 0 3247 BCE C+ IF NOT, LINK EITHER TO
035 36 0 3248 BFR Y+,21,0 FIX OR FLOAT ROUTINE
035 37 0 3249 DLB FIXGN,64,0
035 38 0 3250 BUN X+
035 39 0 3251 *Y DLB TABSC+82,64,0
035 40 0 3252 *X STP LINKX
035 41 0 3253 BUN LINK1
035 42 0 3254 *C CAA V2
035 43 0 3255 BFA Y+,11,8
035 44 0 3256 CAA G13
035 45 0 3257 *K STP INTRX ASSEMBLE STA V2 UNLESS FUNCTION OR
035 46 0 3258 BUN INTRP OR PROCEDURE NAME
035 47 0 3259 CAA TS001
035 48 0 3260 *Y LDR MU
035 49 0 3261 BFR W+,62,01 IF WE ARE IN SCOPE OF A LABEL REQUESTED
035 50 0 3262 *M DLB V2,64,0 FOR MONITORING, OR THE VARIABLE
035 51 0 3263 STP CONVX ASSIGNED IS SO REQUESTED,
035 52 0 3264 BUN CONV+1 ASSEMBLE LINK TO MONITOR SUBROUTINE
035 53 0 3265 BUN E+
035 54 0 3266 *W BSA M-,2
035 55 0 3267 BSA M-,6
035 56 0 3268 *E CLL OMEGA
035 57 0 3269 BUN GENXV
035 58 0 3270 *A CFA V7,64 IF WE ARE SETTING SOMETHING TO A
035 59 0 3271 BCE S+ NONZERO CONSTANT,
035 60 0 3272 CFA V6,64
035 61 0 3273 BCE S+
035 62 0 3274 *D CFA V2,21 MATCH THE TYPES
035 63 0 3275 BCE V-
035 64 0 3276 BFA U+,21,0
035 65 0 3277 STP FLTCX
035 66 0 3278 BUN FLTCN
035 67 0 3279 BUN T+
035 68 0 3280 *U STP FIXCX
035 69 0 3281 BUN FIXCN
035 70 0 3282 *T STA V1,00
035 71 0 3283 BUN A-
035 72 0 3284 *S CAD COMP+7 SOMETHING = 0
035 73 0 3285 LDB OMEGA
035 74 0 3286 LDR V2 SEVERAL CASES TO CONSIDER
035 75 0 3287 STB V1,23
035 76 0 3288 IFL V1,21,3
035 77 0 3289 DBB K=,1 CLA,CLL V2 IN FOR STATEMENT
035 78 0 3290 SLA 6
035 79 0 3291 BFR K-,11,8 CLA IN PROCEDURE OR FUNCTION CASE
035 80 0 3292 SLA 6
035 81 0 3293 BUN K- CLL V2 OTHERWISE
035 82 0 3294 *Z STB V1,21
035 83 0 3295 STP WEMX
035 84 0 3296 BUN WEM,E-
035 85 0 3297 CNST 30167320000 IMPROPER ASSIGNMENT STATEMENT
035 90 0 3298 GCRC STP PRTRX
035 91 0 3299 BUN PMTR ASSEMBLE THE PARAMETER-OBTAINING INSTRUC-
035 92 0 3300 LDB OPRND TION
035 93 0 3301 CAD - 0
035 94 0 3302 CFA DEX,67 DOES REGISTER B CONTAIN THE FIRST
035 95 0 3303 BCE A+ PARAMETER LOCATION
035 96 0 3304 STA DEX
035 97 0 3305 STA V2 IF NOT, ASSEMBLE A DLB V2,44,0
035 98 0 3306 STP ASMBX
035 99 0 3307 BUN ASMBL,DLBV2
036 00 0 3308 *A LDB FUNS
036 01 0 3309 CAD - 0
036 02 0 3310 BSA *+2,3 TURN TAG ON IF WE HAVE PASSED THE
036 03 0 3311 BUN *+2 2ND SEMICOLON
036 04 0 3312 IFL TAG,00,1
036 05 0 3313 SRA 8
036 06 0 3314 LSA 0
036 07 0 3315 SUA GTAB0 WHAT PARAMETER NUMBER IS THIS
036 08 0 3316 STA STAAB,04 (FIRST 0000,THEN 9999, THEN 9998,ETC.)
036 09 0 3317 IFL - 0,22,1
036 10 0 3318 CAD STAAB
036 11 0 3319 BUN GENXY
036 14 0 3320 GCRD STP TSTOX MOD OPERATION MOD(V2,V1)
036 15 0 3321 BUN TSTOP
036 16 0 3322 CSU V2 IF -MOD CHANGE SIGN OF V2.
036 17 0 3323 BCU *+2
036 18 0 3324 STA V2
036 19 0 3325 EXT V1
036 20 0 3326 BFA E+,21,0 CHECK THAT V1,V2 BOTH INTEGER
036 21 0 3327 *F LDR V1
036 22 0 3328 CFR V10,66 IF V1 IS THE CONSTANT 2 OR -2 WE HAVE
036 23 0 3329 BCE Z+ A SPECIAL CASE
036 24 0 3330 *F STP ACCX
036 25 0 3331 BFR ACC1,11,0 PUT V1 IN MEMORY
036 26 0 3332 *C STP CADX
036 27 0 3333 BUN CAD2 BRING V2 INTO ACCUMULATOR
036 28 0 3334 CAD V1
036 29 0 3335 CFA *+1,11
036 30 0 3336 F424 2001,35,Y+
036 31 0 3337 DLB V1,64,0
036 32 0 3338 CSA - 1 CHECK IF V1 IS A CONSTANT,POWER OF TEN
036 33 0 3339 CLL SYMBL
036 34 0 3340 BZA E+
036 35 0 3341 SRT 1
036 36 0 3342 ADL SYMBL
036 37 0 3343 BFR *-2,11,0
036 38 0 3344 SLT 1
036 39 0 3345 CFA XONE+1,00
036 40 0 3346 *Y CAD +5822570000
036 41 0 3347 BCU GEN4 IF NOT,GENERATE SRT10,DIV V1, SLT 30
036 42 0 3348 CLL RR0
036 43 0 3349 STP FLTCX OTHERWISE GENERATE EXTRACT
036 44 0 3350 BUN FLTC1 WITH THE CONSTANT -1 OR -11 OR -111,ETC.
036 45 0 3351 STA V1,64
036 46 0 3352 CAD *+1
036 47 0 3353 BUN GEN4,2800
036 48 0 3354 *E STP WEMX
036 49 0 3355 BUN WEM,GENXX
036 50 0 3356 CNST 30113376911 IMPROPER ARGUMENT OF MOD FUNCTION
036 51 0 3357 *Z STP ACCX
036 52 0 3358 BUN ACC3 IF IT IS MOD 2, GENERATE
036 53 0 3359 CAD G99 CSU =1= EXT V2
036 54 0 3360 BUN GEN4
036 57 0 3361 GCRE LDB LAMDA EITHER IF FINISHING.
036 58 0 3362 CLL LAMDA IF OTHERWISE APPEARED, DO NOTHING
036 59 0 3363 DBB GENRX,1 IF NO OTHERWISE APPEARED,
036 60 0 3364 CAD NOPZ PUT OUT A NOP INSTRUCTION
036 61 0 3365 BUN GENXY
036 64 0 3366 GCRF CLL IOTA FINISH DECLARAING SOME ARRAY
036 65 0 3367 DLB V1,64,0 V1 IS FIRST DIMENSION,V2 IS ARRAY NAME
036 66 0 3368 CSU - 1
036 67 0 3369 MUL ARRI
036 68 0 3370 SLT 10
036 69 0 3371 *B LDR MULS
036 70 0 3372 ADL VARB RESERVE SPACE FOR THIS ARRAY
036 71 0 3373 STA TEMP
036 72 0 3374 *A CAD VARB
036 73 0 3375 ADD XONE+1
036 74 0 3376 STA ABASE,04 PUT BEGINNING LOCATION IN ABASE
036 75 0 3377 SUB ARRL
036 76 0 3378 ADA GTAB0 COMPUTE BASE ADDRESS (MOD 10000)
036 77 0 3379 SLA 4
036 78 0 3380 DLB V2,64,0
036 79 0 3381 STA - 0,64 MOVE LIST OF MULTIPLIERS
036 80 0 3382 STR - 0,04 TO THIS ARRAY NAME
036 81 0 3383 CAA TEMP
036 82 0 3384 SLA 4 PUT TOTAL LENGTH OF ARRAY ON TOP
036 83 0 3385 CLL MULS OF MULTIPLIER LIST
036 84 0 3386 BUN LNGTH
036 87 0 3387 GCRG DLB V1,64,0 MIDDLE OF ARRAY DECLARATION
036 88 0 3388 CAD - 1
036 89 0 3389 MUL ARRL IF GIVEN ARRAY A(I,J,K,L)
036 90 0 3390 STR ARRL
036 91 0 3391 IFL ARRL,00,1 ARRL IS SET TO ((J+1)K+1)L+1
036 92 0 3392 CAD - 1
036 93 0 3393 MUL ARRI
036 94 0 3394 STR ARRI
036 95 0 3395 CAD V1 ARRI IS SET TO JKL
036 96 0 3396 LDB B-
036 97 0 3397 LNGTH LDR V1 ALL DIMENSIONS MUST BE
036 98 0 3398 BFR A+,22,21 FIXED POINT CONSTANTS
036 99 0 3399 STP WEMX
037 00 0 3400 BUN WEM,GENRX
037 01 0 3401 CNST 30163640000 IMPROPER ARRAY DECLARATION
037 02 0 3402 *A STP INSX
037 03 0 3403 BUN INS1 J,K,L GO TO MULTIPLIER STACK
037 04 0 3404 BUN GENRX
037 07 0 3405 GCRH STP XSTX MAKE V1 INTEGRAL,IN MEMORY
037 08 0 3406 BUN XST
037 09 0 3407 CAD LBCV1 GENERATE LBC V1
037 10 0 3408 BUN GENX
037 13 0 3409 GCRI CAA G3 GENERATE LSA 9,BUN IOPUS
037 14 0 3410 DFL UPSLN,62,29
037 15 0 3411 BUN A+
037 18 0 3412 GCRJ CAD V1
037 19 0 3413 BFA E+,11,0
037 20 0 3414 BFA E+,11,2 CHECK FOR VALID INPUT EXPRESSION
037 21 0 3415 BSA E+,1
037 22 0 3416 CAA COMMX
037 23 0 3417 BUN A+
037 26 0 3418 GCRK STP CADX BRING EXPRESSION INTO A-REGISTER
037 27 0 3419 BUN CAD1
037 28 0 3420 *B CAD G10
037 29 0 3421 *A LDR IOPUS GENERATE LDB * IBB IOPUS,2
037 30 0 3422 CLL DEX
037 31 0 3423 STR BUNI,04
037 32 0 3424 STR IBBI,04
037 33 0 3425 LDR V1
037 34 0 3426 STR LDBL0,21
037 35 0 3427 STP INTRX
037 36 0 3428 BUN INTRP
037 37 0 3429 BUN GENRX
037 38 0 3430 *E STP WEMX
037 39 0 3431 BUN WEM,B- IMPROPER INPUT DECLARATION
037 40 0 3432 CNST 30170640000
037 43 0 3433 GCRM DFL MU,62,29 END OF SCOPE OF MONITORED LABEL
037 44 0 3434 BUN GENRX
037 47 0 3435 GCRN STP FIXEX MAKE SURE V1 IS INTEGER
037 48 0 3436 BUN FIXER EITHER A CONSTANT OR IN A REGISTER
037 49 0 3437 BFA A+,11,2
037 50 0 3438 CAA G8 IF NOT A CONSTANT, ADD *+1 NOP V2
037 51 0 3439 BUN GEN5
037 52 0 3440 *A STB V1,11 IF A CONSTANT, ADD OR SUBTRACT ITS
037 53 0 3441 DLB V1,64,0 VALUE FROM THE ASSIGNMENT OF V2,MOD 10000
037 54 0 3442 LDR - 1
037 55 0 3443 STR 0
037 56 0 3444 SLT 14
037 57 0 3445 EXT EX42 (-11110000)
037 58 0 3446 DLB V2,64,00
037 59 0 3447 ADA - 0
037 60 0 3448 STA - 0,64
037 61 0 3449 STP ACCX
037 62 0 3450 BUN ACC4
037 63 0 3451 CAA G9 CAD *+1, NOP V2
037 64 0 3452 *B BUN GEN5
037 67 0 3453 GCRO STP PMTRX LAST PARAMETER TO FUNCTION IS V1
037 68 0 3454 BUN PMTR
037 69 0 3455 CLL DEX
037 70 0 3456 STP REMX,FUNS
037 71 0 3457 BUN REM,*+2
037 72 0 3458 G9 F424 0553,0,*
037 73 0 3459 STA BUNV2,22
037 74 0 3460 DLB V2,64,0 CHECK THAT PROPER
037 75 0 3461 LDR - 1 NUMBER OF ARGUMENTS
037 76 0 3462 STR EXPLN HAS APPEARED
037 77 0 3463 LDR - 0
037 78 0 3464 BFR B+,12,88
037 79 0 3465 SLT 6
037 80 0 3466 BFA A+,51,4
037 81 0 3467 CFR BUNV2,22
037 82 0 3468 BCE B+
037 83 0 3469 BFR B+,22,0
037 84 0 3470 STP WEMX
037 85 0 3471 BUN WEM,*+2
037 86 0 3472 CNST 30113370800 IMPROPER ARGUMENT OF PROCEDURE
037 87 0 3473 *B CAD G4 GENERATE STP V2, BUN V2
037 88 0 3474 STP INTRX
037 89 0 3475 BUN INTRP
037 90 0 3476 STB V2,11
037 91 0 3477 CLL TAG
037 92 0 3478 BUN GENX2
037 93 0 3479 *A SLT 2
037 94 0 3480 BFR B-,21,3
037 95 0 3481 CFR V1,21 IF ARGUMENT TO LIBRARY FUNCTION
037 96 0 3482 BCE B- IS WRONG TYPE, CONVERT IT.
037 97 0 3483 DLB TABSC+82,64,0
037 98 0 3484 BFR *+2,21,0
037 99 0 3485 DLB FIXGN,64,0
038 00 0 3486 STP LINKX
038 01 0 3487 BUN LINK1
038 02 0 3488 BUN B-
038 05 0 3489 *E BFA GCRP,11,0
038 06 0 3490 STP WEMX
038 07 0 3491 BUN WEM,GCRP
038 08 0 3492 CNST 34661000000
038 09 0 3493 GCRP STP REMX,OPRND END OF PROCEDURE OR FUNCTION DECLARATION
038 10 0 3494 BUN REM,E- CHECK FOR EXTRA OPERANDS
038 11 0 3495 *A STP REMX,FUNS
038 12 0 3496 BUN REM2,*+2 PULL NAME OF THIS OFF FUN-STACK
038 13 0 3497 G10 F424 6273,0,*
038 14 0 3498 LDR FNSW
038 15 0 3499 BZR A+
038 16 0 3500 SRA 4
038 17 0 3501 STA LDBI,4 RETURN FROM FUNCTION
038 18 0 3502 STP VSUBX
038 19 0 3503 BUN VSUB1
038 20 0 3504 *D CLL FNSW BRING BACK OLD TEMP STORAGE CELLS
038 21 0 3505 BUN OLDT AND EXIT
038 22 0 3506 *A STP REMX,PR3 FORGET ALL PREFIXES DEFINED IN THIS
038 23 0 3507 BUN REM,A- PROCEDURE
038 24 0 3508 LDR RR1
038 25 0 3509 STR RR3 BRING IN OTHERWISE TYPE OF MAIN PROGRAM
038 26 0 3510 LDR PR1
038 27 0 3511 STR PR3 BRING IN PREFIXES OF MAIN PROGRAM
038 28 0 3512 LDR CHI3
038 29 0 3513 STR CHI BRING IN MONITOR STATUS OF MAIN PROGRAM
038 30 0 3514 LDR PAREF
038 31 0 3515 BFR H+,04,00
038 32 0 3516 *C CAD PLOC IF PARAMETERS OF OUTPUT TYPE HAVE
038 33 0 3517 STP FXUPX OCCURRED, FIX UP THE INSTRUCTION
038 34 0 3518 BUN FXUP TO BUN TO THIS PART OF THE PROCEDURE
038 35 0 3519 CAD FRSTP
038 36 0 3520 SLA 4
038 37 0 3521 STA IRSTP
038 38 0 3522 *E LDB PAREF
038 39 0 3523 IBB F+,9999
038 40 0 3524 CAD - 1
038 41 0 3525 IBB *+1,1 REMOVE LIST OF REFERENCES TO THIS
038 42 0 3526 STA SETUP,04 PARAMETER, MAKE IT THE SETUP STACK
038 43 0 3527 SRA 4
038 44 0 3528 LDR AVAIL
038 45 0 3529 STB AVAIL
038 46 0 3530 STR - 0
038 47 0 3531 STA PAREF,04
038 48 0 3532 BSA G+,1 (THE FIRST PARAMETER MAY ALREADY BE
038 49 0 3533 EXT CUL2 IN REGISTER A)
038 50 0 3534 SUB IRSTP CAD PARAMETER
038 51 0 3535 STA VEE,64
038 52 0 3536 STP ASMBX
038 53 0 3537 BUN ASMBL,X+
038 54 0 3538 *G STP REMX,SETUP GENERATE ALL STA ----,04
038 55 0 3539 BUN REM,*+2 FROM THIS PARAMETER
038 56 0 3540 BUN E-
038 57 0 3541 SRA 4
038 58 0 3542 STA STAI,04
038 59 0 3543 STP ASMBX
038 60 0 3544 BUN ASMBL,STAI
038 61 0 3545 BUN G-
038 62 0 3546 *F CAD PLOC ASSEMBLE TO BUN TO THE
038 63 0 3547 SRA 4 BEGINNING OF THE PROCEDURE
038 64 0 3548 STA BUNI,04
038 65 0 3549 IFL BUNI,04,01
038 66 0 3550 STP ASMBX
038 67 0 3551 BUN ASMBL,BUNI
038 68 0 3552 *H CLL LEVEL EXIT,WE ARE THROUGH WITH THE PROCEDURE
038 69 0 3553 BUN D-
038 70 0 3554 VEE F2448 11,0,0
038 71 0 3555 *W F244 11,VEE,0
038 72 0 3556 *X F424 0,10,W--V
038 75 0 3557 GCRQ IFL PRFSW,62,25 PROCESS LAST PARAMETER. MARK IT
038 76 0 3558 STP YSUBX AS IN ACCUMULATOR IF ITS A CALL BY NAME
038 77 0 3559 BUN YSUB1
038 78 0 3560 DFL PRFSW,62,25 WE HAVE JUST FINISHED COLLECTING
038 79 0 3561 CLL TAG FUNCTION OR PROCEDURE PARAMETERS
038 80 0 3562 STA V3
038 81 0 3563 IFL V3,11,3
038 82 0 3564 STP ASMBX STORE LAST PARAMETER
038 83 0 3565 BUN ASMBL,STAT3
038 84 0 3566 *C CLL PARSW
038 85 0 3567 LDB FNSW
038 86 0 3568 DBB GENRX,1 EXIT IF A FUNCTION DECLARATION
038 87 0 3569 LDR PAREF
038 88 0 3570 BFR D+,04,00 IF CALL BY NAME PARAMETERS HAVE
038 89 0 3571 CAD LOCN APPEARED, ASEMBLE BUN INSTRUCTION
038 90 0 3572 STA PLOC WHICH WILL GO TO THE INITIALIZATION PART
038 91 0 3573 STP AXMBX
038 92 0 3574 BUN ASMBL,BUNZ
038 93 0 3575 *D IFL DELTA,04,4
038 94 0 3576 BUN GENRX
038 97 0 3577 GCRR STP XSTX V1 IS LAST ARRAY SUBSCRIPT
038 98 0 3578 BUN XST MAKE SURE IT IS FIXED POINT AND
038 99 0 3579 DLB V1,64,0 NOT IN REGISTER A
039 00 0 3580 LDR - 1 NOW COMES VERY TRICKY CODING.
039 01 0 3581 DLB V2,64,00 IF THE SUBSCRIPT IS A CONSTANT,
039 02 0 3582 CAD V1 SIMPLY CALCULATE THE ADDRESS
039 03 0 3583 BFA GENDX,22,21
039 04 0 3584 IFL - 0,11,1 OTHERWISE SET INCREMENT WORD TO A 6
039 05 0 3585 STP INSX AND SET UP A LINK TO V1
039 06 0 3586 BUN INS1 NOW INC WD/64=BASE ADDR. /04=AAAA
039 07 0 3587 BUN GENX2 AAAA/67=V1 /04=ARRAY INFORMATION
039 10 0 3588 GCRS STP REMX,FUNS FINISH SUBROUTINE DECLARATION. REMOVE
039 11 0 3589 BUN REM,OLDT LOCATION FROM FUNS, REMOVE TEMP STORAGES.
039 12 0 3590 G11 F424 0313,0,*
039 15 0 3591 GCRT CAD BUNV1 GENERATE BUN V1
039 16 0 3592 BUN GENXY
039 19 0 3593 GCRU LDR BNZAF
039 20 0 3594 BUN GIF1 UNTIL SIMILAR TO IF
039 23 0 3595 GCRV LDR LOCN END OF SEGMENT
039 24 0 3596 CFR LCMAX,64
039 25 0 3597 BCL *+2
039 26 0 3598 STR LCMAX,64 SET LCMAX TO GREATEST LOCN
039 27 0 3599 STP REMX,FUNS USED IN SEGMENTS
039 28 0 3600 BUN REM,*+2
039 29 0 3601 G12 F424 8990,0,*
039 30 0 3602 STA LOCN,64 RESET LOCN TO BEGINNING OF SEGMENT
039 31 0 3603 LSA 8
039 32 0 3604 SRA 4 OUTPUT CONTROL WORD FOR LOADER
039 33 0 3605 BUN GFWRF
039 37 0 3606 GCRW IFL LAMDA,00,1 RECORD THAT OTHERWISE HAS OCCURRED
039 38 0 3607 BUN GENRX
039 41 0 3608 GCRX DEFN GENXY-1
039 44 0 3608 GCRY CAD V1 MAKE SURE A SUBSCRIPT IS FIXED POINT
039 45 0 3609 STP FIXES
039 46 0 3610 BFA FIXER,21,0
039 47 0 3611 ` BUN GENXV
039 50 0 3612 GCRZ STP CADX STOP
039 51 0 3613 BUN CAD1 THERE WILL BE AN ACCUMULATOR
039 52 0 3614 *A CAD HLTZ SYMBOL PRESENT, IF THE STATEMENT
039 53 0 3615 BUN GENXY WAS SIMPLY STOP$
039 57 0 3616 GCROY DLB *+2,44,0 TRACE
039 58 0 3617 STP LIBRX
039 59 0 3618 BUN LIBRF,DMPER
039 60 0 3619 IFL TAG,00,1
039 61 0 3620 STP REMX,OPRND
039 62 0 3621 BUN REM,*+2
039 63 0 3622 BUN GENRX IF LABEL ONLY,EXIT
039 64 0 3623 STA TEMP IF LABEL(N), PUT N ON STACK
039 65 0 3624 DLB TEMP,64,0
039 66 0 3625 CAD - 1
039 67 0 3626 SLA 6
039 68 0 3627 JCROY LDB *
039 69 0 3628 STA - 0,44
039 70 0 3629 BUN GENRX
039 71 0
039 72 0
039 73 0 3630 OBTN1 STP REMX,OPRND
039 74 0 3631 BUN REM,*+2 GET TOP OF OPERAND STACK
039 75 0 3632 BUN E+ AND PLACE IT IN V1
039 76 0 3633 STA V1
039 77 0 3634 BUN A+
039 78 0
039 79 0
039 80 0 3635 OBTN2 STP REMX,OPRND GET TOP OF OPERAND STACK AND PLACE IT IN
039 81 0 3636 BUN REM,C+ V2
039 82 0 3637 *E STP WEMX
039 83 0 3638 BUN WEM,GENRX
039 84 0 3639 CNST 37161000000 MISSING OPERAND
039 85 0 3640 *C STA V2
039 86 0 3641 *A BFA B+,11,0 IF AN ACCUMULATOR SYMBOL WAS
039 87 0 3642 BUN OBTNX REMOVED, SET SER TO ZERO
039 88 0 3643 *B CLL SER
039 89 0 3644 OBTNX BUN *
039 90 0
039 91 0
039 92 0 3645 PMTR LDR KAPPA SELECTIVELY BRING PARAMETER INTO A REG.
039 93 0 3646 BZR A+ HAVE EMPTY SUBSCRIPTS APPEARED
039 94 0 3647 CLL KAPPA
039 95 0 3648 *B STP CADX
039 96 0 3649 BUN CAD1 IF SO, ASSEMBLE CAD V1 AND EXIT
039 97 0 3650 BUN PMTRX
039 98 0 3651 *A LDB FUNS
039 99 0 3652 CAD - 0 IF BEFORE THE FIRST SEMICOLON,
040 00 0 3653 BSA B-,1 ASSEMBLE CAD V1 AND EXIT
040 01 0 3654 STP ACCX
040 02 0 3655 BUN ACC4
040 03 0 3656 CAD V1 OTHERWISE WE HAVE A CALL BY NAME
040 04 0 3657 BFA PMTRX,11,0 FREE THE A-REGISTER
040 05 0 3658 BSA C+,0
040 06 0 3659 *E STP WEMX
040 07 0 3660 BUN WEM,*+2
040 08 0 3661 CNST 30111130000 IMPROPER FUNCTION ARGUMENT
040 09 0 3662 STA V1
040 10 0 3663 *C CAA G5
040 11 0 3664 STP INTRX ASSEMBLE CAD *+1, NOP V1
040 12 0 3665 BUN INTRP
040 13 0 3666 PMTRX BUN *
040 16 0 3667 ACC DEFN *-1
040 17 0 3667 ACC1 BUN C+ ACC1.. PLACE V1 IN TEMP STORAGE
040 18 0 3668 ACC2 STP GETMX ACC2.. PLACE V2 IN TEMP STORAGE
040 19 0 3669 BUN GETMP
040 20 0 3670 STA V2,64
040 21 0 3671 IFL V2,11,3
040 22 0 3672 CAD STAT2
040 23 0 3673 BUN ASMBY
040 24 0 3674 *C STP GETMX
040 25 0 3675 BUN GETMP
040 26 0 3676 STA V1,64
040 27 0 3677 IFL V1,11,3
040 28 0 3678 CAD STAT1
040 29 0 3679 BUN ASYBY
040 30 0 3680 ACCX DEFN ASMBX
040 31 0 3680 ACC3 LDR V1 ACC3.. FREE THE A REGISTER
040 32 0 3681 BFR C-,11,0 IF V1 IS IN A, DO ACC1
040 33 0 3682 LDR V2
040 34 0 3683 BFR ACC2,11,0 IF V2 IS IN A, DO ACC2
040 35 0 3684 ACC4 LDB SER ELSE DO ACC4
040 36 0 3685 IBB ACCX,9999 ACC4.. IF THE A-REGISTER IS IN USE
040 37 0 3686 STP GETMX WITH OTHER OPERANDS BESIDES THE CURRENT
040 38 0 3687 BUN GETMP ONE(S), STORE IT INTO TEMP
040 39 0 3688 LDB SER
040 40 0 3689 STA - 0,64 AND MODIFY THE STACK ACCORDINGLY
040 41 0 3690 IFL - 0,11,3
040 42 0 3691 LDR - 0
040 43 0 3692 STR V3
040 44 0 3693 CAD STAT3
040 45 0 3694 CLL SER
040 46 0 3695 BUN ASMBY
040 49 0 3696 CAD2 LDB XTWO+1 CAD V2
040 50 0 3697 BUN CAD
040 51 0 3698 CAD1 LDB XONE+1 CAD V1
040 52 0 3699 CAD CAD - V
040 53 0 3700 STB ZHE,04 BRING V(RB) INTO A REGISTER
040 54 0 3701 BFA CADX,11,0
040 55 0 3702 STP ACCX IF ITS NOT THERE ALREADY, FREE
040 56 0 3703 BUN ACC4 THE ACCUMULATOR
040 57 0 3704 LDB ZHE
040 58 0 3705 CAD - V COMPILE CAD OR CSU V1 OR V2
040 59 0 3706 BSA B+,1
040 60 0 3707 CAD - CADV1-1
040 61 0 3708 *D STP ASMBX
040 62 0 3709 BUN ASMBY
040 63 0 3710 *C LDB ZHE
040 64 0 3711 STB - V,12
040 65 0 3712 CAD - V
040 66 0 3713 CADX BSA *,0
040 67 0 3714 STP ACCX TO REVERSE SIGN OF A-REGISTER, STORE
040 68 0 3715 BUN - ACC IT THEN COMPILE CSU INSTRUCTION
040 69 0 3716 LDB ZHE
040 70 0 3717 *B CAD - CSUV1-1
040 71 0 3718 BUN D-
040 74 0 3719 XST CAD V1
040 75 0 3720 STP FIXEX FIX V1 IF IT IS AN INTEGER
040 76 0 3721 BFA FIXER,21,0
040 77 0 3722 STP ACCX
040 78 0 3723 BFA ACC1,11,0 STORE V1 IF IT IS IN REGISTER A
040 79 0 3724 XSTX BUN *
040 82 0 3725 FIXER CAD V1
040 83 0 3726 BFA A+,11,2
040 84 0 3727 STP CADX
040 85 0 3728 BUN CAD1 CHANGE V1 TO INTEGER FORM
040 86 0 3729 BFA FIXES,21,1
040 87 0 3730 DLB FIXGN,64,00
040 88 0 3731 STP LINKX LINK TO FIX ROUTINE
040 89 0 3732 BUN LINK1
040 90 0 3733 IFL V1,21,1
040 91 0 3734 CAD V1
040 92 0 3735 FIXEX BUN *
040 93 0 3736 *A BFA FIXES,21,1 IF V1 IS A CONSTANT,
040 94 0 3737 STP FIXCX CHANGE IT WITH FIXCN
040 95 0 3738 BUN FIXCN
040 96 0 3739 STA V1,00
040 97 0 3740 BUN FIXEX-1
041 00 0 3741