Added start address thing.
[h316.git] / programs / tools / src / binal.asm
CommitLineData
4102e16c 1* BINAL - BINARY PUNCH AND LOAD PROGRAM (REV. 1.0)
cf7fb3fa 2*
3*
4102e16c 4*
5*
6* BINAL - A PAL-AP DROP-IN REPLACEMENT.
7*
8*
9*
10* AUTHOR
11* PHILIPP HACHTMANN
12*
13*
14* VERSION
15* 1.0 (24.04.2006) - INITIAL VERSION
16*
17*
18*
19* STORAGE REQUIREMENT
20* ONE SEGMENT
21*
22*
23* FEATURES:
24* NO 4/6/6 FORMAT, DIRECT BINARY DATA
25* BLOCK CHECKSUMS
26* LOAD AND GO CAPABLE
27* SUPPORTS ONLY HIGH SPEED PAPER TAPE PUNCH
28*
29*
30* USAGE
31* FIRST LOAD THE OBJECT TAPE INTO ANY SECTOR 'XX000 IN MEMORY.
32* TO PUNCH A SELF LOADING TAPE DO THE FOLLOWING:
33* -PRESS MSTCLR
34* -SET P TO 'XX000
35* -IF LOAD AND GO IS DESIRED, PUT PROGRAM'S START ADDRESS INTO A
36* -PRESS START
37* -ENTER THE FIRST ADDRESS TO BE PUNCHED INTO A
38* -PRESS START
39* -ENTER THE LAST ADDRESS TO BE PUNCHED INTO A
40* -PRESS START, BINAL PUNCHES YOUR SYSTEM TAPE
41*
42* TO MAKE A BINAL SLST TAPE
43* USE 'XX000 THAT AS FIRST LOCATION TO BE PUNCHED.
44* THE LAST LOCATION TO BE PUNCHED IS 'XX577, THE REST OF THE SECTOR IS
45* ALWAYS AND AUTOMATICALLY PUNCHED OUT.
46*
47* LOADING SLST TAPES
48* SIMPLY MOUNT THE GENERATED TAPE ON THE HIGH SPEED PAPER TAPE READER
49* AND LOAD WITH THE STANDARD KEY-IN LOADER.
50* THE CONTENTS OF THE TAPE GO TO WHERE THEY COME FROM. THE THIRD STAGE
51* LOADER GOES TO 'XX600. THIS LOCATION CAN BE ALTERED BY ENTERING AN
52* ADDRESS INTO A BEFORE STARTING THE KEY-IN LOADER.
53* IT IS ALSO POSSIBLE TO ALTER THE THIRD-STAGE LOADER ADDRESS BEFORE
54* PUNCHING BY DEPOSITING ANOTHER ADDRESS INTO 'XX600.
55*
56* SPECIAL MODES OF OPERATION
57* IT IS POSSIBLE TO COLLECT THE OUTPUT OF MULTIPLE RUNS OF BINAL INTO
58* ONE SYSTEM TAPE. THIS IS DONE BY SENSE SWITCH SETTINGS:
59* SSW1 SET - DON'T PUNCH OUT SECOND AND THIRD STAGE LOADERS
60* SSW2 SET - DON'T PUNCH OUT DATA
61* SSW3 SET - DON'T PUNCH OUT END OF TAPE/GO BLOCK
62* SSW4 SET - PUNCH ONLY A GO BLOCK
cf7fb3fa 63*
64* TAPE FORMAT:
4102e16c 65* THE TAPE CONTAINS HIGE DATA BLOCKS.
cf7fb3fa 66* EVERY BLOCK IS PREPENDED WITH THE BLOCK START CHARACTER
67* AND THE BLOCK TYPE BYTE.
68* THEN FOLLOWS THE BLOCK DATA IN 16BIT BIG ENDIAN FORMAT.
69*
70* BLOCK TYPES
71*
72* DATA BLOCK
73* THE DATA BLOCK CONTAINS USER DATA AND A CHECKSUM.
74* LAYOUT:
75* | START ADDRESS |
76* | DATA LENGTH |
77* | DATA |
78* | BLOCK CHECKSUM |
79*
80* ZERO BLOCK
81* ZERO BLOCK IS USED TO REPRESENT ZERO CORE LOCATIONS
82* LAYOUT:
83* | START ADDRESS |
84* | ZERO LENGTH |
85* | BLOCK CHECKSUM |
86*
87* START LOC BLOCK
88* A BLOCK TO SET THE START LOCATION AFTER LOAD
89* LAYOUT;
90* | START ADDRESS |
91* | CHECKSUM (HAHA)|
92*
93* GO BLOCK
94* THIS BLOCK STOPS LOADING AND JUMPS TO THE START LOCATION.
95* IF NO START LOCATION HAS BEEN CODED THE LOADER WILL
96* CONTIUNE!
97*
4e8a2859 98* STOP BLOCK
cf7fb3fa 99* THIS BLOCK TELLS THE LOADER THAT IT SHALL STOP NOW.
100* LAYOUT:
101* NO BODY AT ALL, ONLY BLOCK START AND BLOCK TYPE :-)
102*
103************************************************************************
104*
61655ba3 105 SUBR BINAL,ANF
106 SUBR LSTART,BO3S BEGINNING OF THIRD STAGE LOADER
cf7fb3fa 107*
108 REL RELOCATABLE MODE
109 ORG 0
110*
61655ba3 111ANF STA STRT SAVE AUTO START LOCATION
2dbecc75 112 CRA
cf7fb3fa 113 HLT
114 STA ALOC FIRST LOCATION TO PUNCH
2dbecc75 115 CRA
cf7fb3fa 116 HLT
117 STA ELOC LAST LOCATION TO PUNCH
118*
2dbecc75 119* FIRST SOME PREPARATIONS FOR THE SECOND AND THIRD STAGE LOADERS
120* CRA
121 STA PTR2 CLEAR PTR2, SO KEY-IN LOADER WILL STOP THERE.
122 STA PAUS TERMINATOR FOR THIRD STAGE LOADER
123*
124* BUT HERE WE GO
cf7fb3fa 125 OCP '0002 START PUNCH (NOT NECESSARY ON MY H316)
4102e16c 126*
127 SR1 SKIP IF SSW 1 RESET
128 JMP NOBO NO BOOT CODE
cf7fb3fa 129 JST PLDR PUNCH OUT LEADER
130 JST PS2 PUNCH SECOND STAGE LOADER
cf7fb3fa 131 JST PS3 PUNCH THIRD STAGE LOADER
4102e16c 132*
133NOBO SS2 SKIP IF SSW 2 SET
d670f1ce 134 JST PDAT PUNCH OUT DATA
4102e16c 135*
136 LDA STRT START ADDRESS
137 SZE SET?
138 JST ABLK MAKE ADRESS-BLOCK
139*
140 SR3 SKIP IF SSW3 RESET
141 JMP NOGO NO GO/STOP BLOCK
142*
143 LDA STRT
d670f1ce 144 SZE
4102e16c 145 JST GBLK MAKE GO BLOCK
146 LDA STRT
147 SNZ
d670f1ce 148 JST SBLK MAKE STOP BLOCK
4102e16c 149*
150NOGO JST PLDR END OF TAPE HAS COME.
d670f1ce 151 HLT
152 JMP *-1 NO ESCAPE
153*
4102e16c 154*
d670f1ce 155**********************
156* PUNCH THE DESIRED DATA
157PDAT DAC **
cf7fb3fa 158*
159LOOP CRA MAIN LOOP
160 LDA ELOC
161 SUB ALOC
4102e16c 162 AOA ONE IS MINIMUM
163 STA AVAL AVAILABLE NUMBER OF WORDS
cf7fb3fa 164 SNZ
d670f1ce 165 JMP* PDAT END OF DATA, WE ARE HAPPY, RETURN
cf7fb3fa 166*
4102e16c 167* TRY TO MAKE A ZERO BLOCK
cf7fb3fa 168 LDA ALOC
169 JST CZER COUNT ZERO LOCATIONS - IF ANY
170 CAS ZMIN COMPARE WITH MINIMUM FOR ZERO BLOCK
171 JMP MKZE GO TO MAKE A ZERO BLOCK
172 JMP MKZE GO FOR THE ZERO BLOCK AS WELL
173 JMP FILL PREPARE CONVETIONAL BLOCK
174MKZE CAS AVAL BLOCK TOO BIG??
175 LDA AVAL YES, LIMIT BLOCK SIZE
176 NOP TIGHT FIT
177 JST ZBLK PRODUCE THE THE BLOCK
178 JMP LOOP CONTINUE IN THE MAIN LOOP
179FILL CRA STUFF A PACKET
180 STA BCNT CLEAR BLOCK SIZE
181*
182STUF LDA ALOC
183 ADD BCNT CALCULATE NEW POSITION TO LOOK AT
184 JST CFIL DETERMINE AMOUNT OF CONTIGUOUS DATA
185 ADD BCNT ADD ACTUAL BLOCK SIZE
186 CAS AVAL COMPARE THAT WITH AVAILABLE DATA
187 LDA AVAL TOO MUCH, LIMIT AND GO
188 SKP A TIGHT FIT
189 JMP FIL2 FILL MORE!
190 JST DBLK PRODUCE BLOCK
191 JMP LOOP RETURN TO MAIN LOOP
192*
193FIL2 STA BCNT UPDATE BLOCK SIZE
194 ADD ALOC MAKE NEW STARTING LOCATION
195 JST CZER COUNT FOLLOWING ZEROS
196 CAS ZMIN COMPARE WITH MINIMUM FOR A ZERO BLOCK
197 JMP BEND OK, THERE ARE ENOUGH ZEROS. BLOCK SHALL BE GOOD.
198 JMP BEND
199* NO, WE CONTINUE LOOKING
200 ADD BCNT ADD CURRENT BLOCK SIZE
201 STA BCNT AND UPDATE IT
202 JMP STUF STUFF MORE
203*
204BEND LDA BCNT
205 JST DBLK PUNCH THE BLOCK
206 JMP LOOP BACK TO MAIN LOOP
207*
d670f1ce 208**************************
cf7fb3fa 209*
210AVAL DEC 0 AVAILABLE DATA SIZE
211IPTR DEC 0 IMAGINARY POINTER
212BCNT DEC 0 PACKET SIZE COUNTER
213ZMIN DEC 8 MIN AMOUNT OF ZEROS FOR A BLOCK BREAK
214STRT DEC 0 ADDRESS FOR AUTO-START
215*
216*
217*******************
218* MAKE A STOP BLOCK
219SBLK DAC **
220 LDA BSTA START CHARACTER
221 ICA
222 ADD TSTP BLOCK TYPE
223 JST SWRD PUNCH THAT
224 JMP* SBLK
225*
226*
227*******************
228* MAKE A GO BLOCK
229GBLK DAC **
230 LDA BSTA START CHARACTER
231 ICA
232 ADD TGO BLOCK TYPE
233 JST SWRD PUNCH THAT
234 JMP* GBLK
235*
236*
237******************
238* MAKE A START ADDRESS BLOCK
239ABLK DAC **
2dbecc75 240 STA CNT2 SAVE THE ADDRESS
cf7fb3fa 241 LDA BSTA START CHARACTER
242 ICA
243 ADD TSAD BLOCK TYPE
244 JST SWRD PUNCH THAT
2dbecc75 245 LDA CNT2
cf7fb3fa 246 JST SWRD
247 JST SWRD
248 JMP* ABLK
249*
250*
251*******************
252* MAKE ZERO BLOCK
253ZBLK DAC ** PRODUCE A ZERO BLOCK
2dbecc75 254 STA CNT2 STORE SIZE OF BLOCK
cf7fb3fa 255 LDA BSTA START CHARACTER
256 ICA
257 ADD TZER BLOCK TYPE
258 JST SWRD PUNCH THAT
259 LDA ALOC LOAD START ADDRESS
260 JST SWRD PUNCH START ADDRESS
261 STA CSUM INIT CHECKSUM
2dbecc75 262 LDA CNT2 LOAD SIZE
cf7fb3fa 263 JST SWRD PUNCH SIZE
264 ADD CSUM ADD CHECKSUM
265 JST SWRD PUNCH OUT CHECKSUM
266 LDA ALOC RELOAD POINTER
2dbecc75 267 ADD CNT2 CALCULATE NEW POINTER
cf7fb3fa 268 STA ALOC UPDATE ALOC
269 JMP* ZBLK END
270*
271*
272********************
273* MAKE DATA BLOCK
274DBLK DAC **
2dbecc75 275 STA CNT2 SAVE SIZE
cf7fb3fa 276*
277 LDA BSTA START CHARACTER
278 ICA
279 ADD TDAT DATA BLOCK TYPE
280 JST SWRD PUNCH
281*
282 LDA ALOC START ADDRESS
283 JST SWRD PUNCH IT
284 STA CSUM INIT CHECKSUM
285*
2dbecc75 286 LDA CNT2 PACKET SIZE
cf7fb3fa 287 JST SWRD PUNCH IT
288 ADD CSUM
289 STA CSUM UPDATE CHECKSUM
290*
2dbecc75 291 LDA CNT2
cf7fb3fa 292 TCA
2dbecc75 293 STA CNT2 NOW WE USE IT AS NEG COUNTER
cf7fb3fa 294*
295DDLP LDA* ALOC LOAD DATA
296 JST SWRD PUNCH DATA
297 ADD CSUM
298 STA CSUM UPDATE CHECKSUM
299 IRS ALOC
2dbecc75 300 IRS CNT2
cf7fb3fa 301 JMP DDLP LOOP IT
302 JST SWRD PUNCH CHECKSUM
303 JMP* DBLK BLOCK DONE
304*
305*
306*
307********************
308* COUNT FILLED LOCATIONS
309CFIL DAC **
310 STA PTR STORE ADDRESS TO POINTER
311 LDA SNZ LOAD DISCRIMINATOR OPERATION
312 STA DISC STORE INTO COUNT ROUTINE
313 JST COUN GO AND COUNT IT
314 JMP* CFIL
315*
316********************
317* COUNT ZERO LOCATIONS
318CZER DAC **
319 STA PTR STORE ADDRESS TO POINTER
320 LDA SZE
321 STA DISC
322 JST COUN
323 JMP* CZER
324*
325COUN DAC ** COUNT FILLED OR EMPTY LOCATIONS
326 CRA
2dbecc75 327 STA CNT2 INITIALIZE COUNTER
cf7fb3fa 328CLOP LDA* PTR
329DISC SZE WILL BE DYNAMICALLY OVERWRITTEN
330 JMP ZFIN NOW OTHER KIND OF DATA
2dbecc75 331 IRS CNT2 NOTE DOWN THE FIND
cf7fb3fa 332 IRS PTR POINT TO NEXT LOCATION TO BE TESTED
333 SKP
334 JMP ZFIN ADDRESS OVERFLOW MUST STOP COUNTING
335 JMP CLOP COUNT ON
2dbecc75 336ZFIN LDA CNT2
cf7fb3fa 337 JMP* COUN
338*
339*
340***********************
341*
342PS2 DAC ** PUNCH OUT SECOND STAGE LOADER
343 LDA B2AD LOAD START ADDRESS OF SECOND STAGE LOADER
344 JST P23 CALL PUNCH23 ROUTINE
345 JMP* PS2
346*
347PS3 DAC ** PUNCH OUT SECOND STAGE LOADER
348 LDA S3SC LOAD START CHARACTER
349 OTA 2 PUNCH START CHARACTER
350 JMP *-1
351 LDA B3AD LOAD START ADDRESS OF SECOND STAGE LOADER
352 JST P23 CALL PUNCH23 ROUTINE
353 JMP* PS3
354*
355P23 DAC ** PUNCH OUT A LOADER
356 STA PTR SAVE POINTER
357L23 LDA* PTR
4e8a2859 358 JST SWRD PUNCH OUT CURRENT WORD
cf7fb3fa 359 SNZ
360 JMP* P23 RETURN
cf7fb3fa 361 IRS PTR INCREMENT POINTER
362 JMP L23 LOOP AGAIN
363*
364*
365**********************
366* PUNCH SOME LEADER
367PLDR DAC ** PUNCH LEADER
368 LDA LDRL LOAD LEADER LENGTH
369 TCA COMPLEMENT IT
2dbecc75 370 STA CNT2 STORE TO LEADER COUNTER
cf7fb3fa 371 CRA LEADER IS ZERO
372LLP OTA 2
373 JMP *-1
2dbecc75 374 IRS CNT2
cf7fb3fa 375 JMP LLP
376 JMP* PLDR
377*
378*
379*********************
380* PUNCH ONE WORD OF DATA
381SWRD DAC **
382 ICA
383 OTA 2
384 JMP *-1
385 ICA
386 OTA 2
387 JMP *-1 WAIT
388 JMP* SWRD
389*
390*
391B2AD DAC BO2S START ADDRESS OF SECOND STAGE LOADER
392B3AD DAC BO3S START ADDRESS OF THIRD STAGE LOADER
393*
040533c5 394LDRL DEC 100 LEADER LENGTH
cf7fb3fa 395SZE SZE INSTRUCTION FOR FILL IN
396SNZ SNZ INSTRUCTION FOR FILL IN
397*
398*
399************************************************************************
400* THIS IST THE SECOND STAGE LOADER
401*
2dbecc75 402* IT IS IMPORTANT THAT THERE ARE NO ZERO WORDS IN THIS CODE BECAUSE THE
403* KEY-IN LOADER WORKS ONLY UNTIL IT DETECTS A ZERO WORD.
404*
405BO2S DAC '20 START ADDRESS, ALWAYS '20
cf7fb3fa 406 JMP '10 JUMP BACK INTO KEY-IN LOADER
407*
408*S21 OCP '001 THIS IS THE JUMP-IN LOCATION, WILL GO TO '21
409*
2dbecc75 410 INA '1001 READ FROM PAPER TAPE
411 JMP '17-BO2S+*-1 WAIT
cf7fb3fa 412 SUB '17-BO2S+S3SC STAGE 3 START CHARACTER
413 SZE
414 JMP '17-BO2S+*-4 EAT UP ALL JUNK
415*
2dbecc75 416 INA '1001 READ FROM PAPER TAPE
417 JMP '17-BO2S+*-1 WAIT
418 ICA OTHER CHARACTER
419 INA '001 READ FROM TAPE WITHOUT CLEARING A
420 JMP '17-BO2S+*-1 WAIT
cf7fb3fa 421*
2dbecc75 422 STA '17-BO2S+CNT2 STORE START ADDRESS OF THIRD STAGE
4e8a2859 423* LDA '57 LOOK FOR DEPOSITED OTHER BOOT ADDRESS
424* SZE OK, IF WE FIND SOMETHING THERE...
425* STA '17-BO2S+CNT2 OVERWRITE DEFAULT VALUE
2dbecc75 426 LDA '17-BO2S+CNT2 RELOAD START ADDRESS
427 STA* '17-BO2S+CNT2 STORE THAT ADDRESS INTO ITSELF
4e8a2859 428 IRS '17-BO2S+CNT2 CORRECT STOLEN WORD
4e8a2859 429 LDA '17-BO2S+CNT2 WHERE TO LOAD NOW?
2dbecc75 430 STA '17-BO2S+PTR2 INIT WRITE POINTER
cf7fb3fa 431*
2dbecc75 432LOP INA '1001 READ IN CHARACTER
433 JMP '17-BO2S+*-1 WAIT
434 ICA OTHER CHARACTER
435 INA '001 READ FROM TAPE WITHOUT CLEARING A
436 JMP '17-BO2S+*-1 WAIT
437 SNZ DID WE LOAD A ZERO?
4e8a2859 438 JMP* '17-BO2S+CNT2 JUMP INTO THIRD STAGE LOADER
4e8a2859 439 STA* '17-BO2S+PTR2 STORE DATA
440 IRS '17-BO2S+PTR2 MOVE ON
cf7fb3fa 441 JMP '17-BO2S+LOP FETCH MORE DATA
442*
443S3SC OCT '301 START CHARACTER TO RECOGNIZE STAGE3
2dbecc75 444PTR2 DAC ** MEMORY POINTER
445CNT2 DAC ** LOAD ADDRESS
cf7fb3fa 446*
447*
448************************************************************************
449* HERE COMES THE THIRD STAGE LOADER
450*
451 ORG '600
452BO3S DAC * THAT IS FOR THE SECOND STAGE LOADER
4e8a2859 453*********
2dbecc75 454* COMPLETE THE PAUS ROUTINE
455 LDA PJ1
4e8a2859 456 STA J1
040533c5 457 LDA PJ2
458 STA J2
4e8a2859 459 CRA
2dbecc75 460 STA PAUS
461 STA JH
462*
463* START LOADING
464 OCP 1 READER ON
cf7fb3fa 465SLOP INA '1001 CRA AND READ
466 JMP *-1
467 SUB BSTA BLOCK START?
468 SZE
469 JMP SLOP BACK TO SEARCH LOOP
470 INA '1001 READ BLOCK TYPE
471 JMP *-1
472 STA BTYP STORE BLOCK TYPE FOR LATER USE
473 CAS TSAD START ADDRESS BLOCK?
474 JMP *+2
475 JMP RSAD READ START ADDRESS BLOCK
476 NOP
477 CAS TGO GO BLOCK?
478 JMP *+2
479 JMP RGO PROCESS GO BLOCK
480 NOP
481 CAS TDAT DATA BLOCK?
482 JMP *+2
483 JMP RBLK READ DATA BLOCK
484 NOP
485 CAS TZER ZERO BLOCK?
486 JMP *+2
487 JMP RBLK READ ZERO BLOCK
488 NOP
489 CAS TSTP STOP BLOCK?
490 JMP *+2
491 JMP RSTP PROCESS STOP BLOCK
492 NOP
2dbecc75 493 LDA EBT ERROR BLOCK TYPE
4e8a2859 494 JST PAUS PAUSE
cf7fb3fa 495 JMP SLOP SEARCH FOR NEW BLOCK
496*
497********************
498* START ADDRESS BLOCK
499RSAD JST LWRD
500 STA RESA
501 JST LWRD
502 SUB RESA
503 SZE
504 JMP CERR CHECKSUM ERROR!
505 JMP SLOP LOOK FOR NEW BLOCK!
506*
507*
508RGO JMP* RESA
509*
510*********************
511* READ DATA OR ZERO BLOCK
512RBLK JST LWRD
513 STA PTR START ADDRESS
514 STA CSUM
515 JST LWRD
516 TCA TWO'S COMPLEMENT
517 STA LEN GO COUNTER
518 TCA TWO'S COMPLEMENT BACK
519 ADD CSUM
520 STA CSUM
521RLP LDA BTYPE
522 CAS TDAT DATA BLOCK?
523 JMP RZER NO
524 JMP RDAT YES
525 JMP RZER NO, CLEAR A
526RDAT JST LWRD
527 STA* PTR
528 ADD CSUM ADD TO CHECKSUM
529 STA CSUM
530EL IRS PTR POINT TO NEXT LOCATION
531 SKP
532 JMP BO3S OVERFLOW!
533 IRS LEN INCREMENT NEG COUNTER
534 JMP RLP READ ON
535*
536 JST LWRD NOW READ IN THE CHECKSUM
537 SUB CSUM
538 SNZ
539 JMP SLOP
540CERR CRA CHECKSUM ERROR HALT
4e8a2859 541 JST PAUS
cf7fb3fa 542 JMP SLOP TRY A NEW BLOCK
543*
544RZER CRA
545 STA* PTR STORE ZERO
546 JMP EL USE END OF LOOP ABOVE
547*******
548* STOP BLOCK
4e8a2859 549RSTP LDA BO3S FOR SHOW
550 JST PAUS
cf7fb3fa 551 JMP* RESA JUMP TO RESTART LOCATION
552*
cf7fb3fa 553*
4e8a2859 554**********************
555* CONSTANTS
556*
557RESA DAC SLOP RESTART ADDRESS
cf7fb3fa 558BSTA DEC 129 BLOCK START CHARACTER
2dbecc75 559EBT OCT '125252 ERROR MESSAGE FOR A REG
cf7fb3fa 560*
561* BLOCK TYPES:
562TSAD OCT '33
563TGO OCT '44
564TZER OCT '55
565TSTP OCT '66
566TDAT OCT '11
567*
568*
040533c5 569LWRD OCT 66 CAN'T BE INITIALLY ZERO!
cf7fb3fa 570 INA '1001 CLEAR A AND INPUT
571 JMP *-1
572 ICA
573 INA '1 INPUT
574 JMP *-1 WAIT
575 JMP* LWRD
576*
577 FIN WRITE OUT LITERALS - IF ANY
4e8a2859 578*******************
579* THE ATTIC OF THE THIRD STAGE LOADER
580PJ1 JMP* PAUS LAST LOCATION THAT WILL BE LOADED FROM TAPE!
040533c5 581PJ2 OCP '101 STOP READER
2dbecc75 582PAUS DAC ** WILL BE INITIALIZED TO ZERO BEFORE PUNCHING
040533c5 583J2 DAC ** BECOMES OCP '101 ON START OF LOAD
2dbecc75 584JH HLT BECOMES CLEARED ON START OF LOAD
585J1 DAC ** BECOMES JMP* PAUS ON START OF LOAD
4e8a2859 586*
587***** VARIABLES
2dbecc75 588CSUM DAC ** CHECKSUM
589LEN DAC ** LENGTH COUNTER
590BTYP DAC ** BLOCK TYPE
591ALOC *** ** CURRENT LOCATION TO PUNCH
592ELOC *** ** LAST LOCATION TO PUNCH
593PTR DAC ** MEMORY POINTER
4e8a2859 594CNT DAC ** WHERE TO LOAD? CAN BE CHANGED.
cf7fb3fa 595*
596************************************************************
19f6873e 597 END ANF THAT'S IT, ENJOY!
2dbecc75 598