Another revision
[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*
325547c4 394LDRL DEC 300 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
457 CRA
2dbecc75 458 STA PAUS
459 STA JH
460*
461* START LOADING
462 OCP 1 READER ON
cf7fb3fa 463SLOP INA '1001 CRA AND READ
464 JMP *-1
465 SUB BSTA BLOCK START?
466 SZE
467 JMP SLOP BACK TO SEARCH LOOP
468 INA '1001 READ BLOCK TYPE
469 JMP *-1
470 STA BTYP STORE BLOCK TYPE FOR LATER USE
471 CAS TSAD START ADDRESS BLOCK?
472 JMP *+2
473 JMP RSAD READ START ADDRESS BLOCK
474 NOP
475 CAS TGO GO BLOCK?
476 JMP *+2
477 JMP RGO PROCESS GO BLOCK
478 NOP
479 CAS TDAT DATA BLOCK?
480 JMP *+2
481 JMP RBLK READ DATA BLOCK
482 NOP
483 CAS TZER ZERO BLOCK?
484 JMP *+2
485 JMP RBLK READ ZERO BLOCK
486 NOP
487 CAS TSTP STOP BLOCK?
488 JMP *+2
489 JMP RSTP PROCESS STOP BLOCK
490 NOP
2dbecc75 491 LDA EBT ERROR BLOCK TYPE
4e8a2859 492 JST PAUS PAUSE
cf7fb3fa 493 JMP SLOP SEARCH FOR NEW BLOCK
494*
495********************
496* START ADDRESS BLOCK
497RSAD JST LWRD
498 STA RESA
499 JST LWRD
500 SUB RESA
501 SZE
502 JMP CERR CHECKSUM ERROR!
503 JMP SLOP LOOK FOR NEW BLOCK!
504*
505*
506RGO JMP* RESA
507*
508*********************
509* READ DATA OR ZERO BLOCK
510RBLK JST LWRD
511 STA PTR START ADDRESS
512 STA CSUM
513 JST LWRD
514 TCA TWO'S COMPLEMENT
515 STA LEN GO COUNTER
516 TCA TWO'S COMPLEMENT BACK
517 ADD CSUM
518 STA CSUM
519RLP LDA BTYPE
520 CAS TDAT DATA BLOCK?
521 JMP RZER NO
522 JMP RDAT YES
523 JMP RZER NO, CLEAR A
524RDAT JST LWRD
525 STA* PTR
526 ADD CSUM ADD TO CHECKSUM
527 STA CSUM
528EL IRS PTR POINT TO NEXT LOCATION
529 SKP
530 JMP BO3S OVERFLOW!
531 IRS LEN INCREMENT NEG COUNTER
532 JMP RLP READ ON
533*
534 JST LWRD NOW READ IN THE CHECKSUM
535 SUB CSUM
536 SNZ
537 JMP SLOP
538CERR CRA CHECKSUM ERROR HALT
4e8a2859 539 JST PAUS
cf7fb3fa 540 JMP SLOP TRY A NEW BLOCK
541*
542RZER CRA
543 STA* PTR STORE ZERO
544 JMP EL USE END OF LOOP ABOVE
545*******
546* STOP BLOCK
4e8a2859 547RSTP LDA BO3S FOR SHOW
548 JST PAUS
cf7fb3fa 549 JMP* RESA JUMP TO RESTART LOCATION
550*
cf7fb3fa 551*
4e8a2859 552**********************
553* CONSTANTS
554*
555RESA DAC SLOP RESTART ADDRESS
cf7fb3fa 556BSTA DEC 129 BLOCK START CHARACTER
2dbecc75 557EBT OCT '125252 ERROR MESSAGE FOR A REG
cf7fb3fa 558*
559* BLOCK TYPES:
560TSAD OCT '33
561TGO OCT '44
562TZER OCT '55
563TSTP OCT '66
564TDAT OCT '11
565*
566*
567LWRD OCT 66
568 INA '1001 CLEAR A AND INPUT
569 JMP *-1
570 ICA
571 INA '1 INPUT
572 JMP *-1 WAIT
573 JMP* LWRD
574*
575 FIN WRITE OUT LITERALS - IF ANY
4e8a2859 576*******************
577* THE ATTIC OF THE THIRD STAGE LOADER
578PJ1 JMP* PAUS LAST LOCATION THAT WILL BE LOADED FROM TAPE!
2dbecc75 579PAUS DAC ** WILL BE INITIALIZED TO ZERO BEFORE PUNCHING
580JH HLT BECOMES CLEARED ON START OF LOAD
581J1 DAC ** BECOMES JMP* PAUS ON START OF LOAD
4e8a2859 582*
583***** VARIABLES
2dbecc75 584CSUM DAC ** CHECKSUM
585LEN DAC ** LENGTH COUNTER
586BTYP DAC ** BLOCK TYPE
587ALOC *** ** CURRENT LOCATION TO PUNCH
588ELOC *** ** LAST LOCATION TO PUNCH
589PTR DAC ** MEMORY POINTER
4e8a2859 590CNT DAC ** WHERE TO LOAD? CAN BE CHANGED.
cf7fb3fa 591*
592************************************************************
2dbecc75 593 END THAT'S IT, ENJOY!
594