*** empty log message ***
[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*
4102e16c 105 SUBR LSTART,BO3S BEGINNING OF THIRD STAGE LOADER
cf7fb3fa 106*
107 REL RELOCATABLE MODE
108 ORG 0
109*
4102e16c 110 STA STRT SAVE AUTO START LOCATION
2dbecc75 111 CRA
cf7fb3fa 112 HLT
113 STA ALOC FIRST LOCATION TO PUNCH
2dbecc75 114 CRA
cf7fb3fa 115 HLT
116 STA ELOC LAST LOCATION TO PUNCH
117*
2dbecc75 118* FIRST SOME PREPARATIONS FOR THE SECOND AND THIRD STAGE LOADERS
119* CRA
120 STA PTR2 CLEAR PTR2, SO KEY-IN LOADER WILL STOP THERE.
121 STA PAUS TERMINATOR FOR THIRD STAGE LOADER
122*
123* BUT HERE WE GO
cf7fb3fa 124 OCP '0002 START PUNCH (NOT NECESSARY ON MY H316)
4102e16c 125*
126 SR1 SKIP IF SSW 1 RESET
127 JMP NOBO NO BOOT CODE
cf7fb3fa 128 JST PLDR PUNCH OUT LEADER
129 JST PS2 PUNCH SECOND STAGE LOADER
cf7fb3fa 130 JST PS3 PUNCH THIRD STAGE LOADER
4102e16c 131*
132NOBO SS2 SKIP IF SSW 2 SET
d670f1ce 133 JST PDAT PUNCH OUT DATA
4102e16c 134*
135 LDA STRT START ADDRESS
136 SZE SET?
137 JST ABLK MAKE ADRESS-BLOCK
138*
139 SR3 SKIP IF SSW3 RESET
140 JMP NOGO NO GO/STOP BLOCK
141*
142 LDA STRT
d670f1ce 143 SZE
4102e16c 144 JST GBLK MAKE GO BLOCK
145 LDA STRT
146 SNZ
d670f1ce 147 JST SBLK MAKE STOP BLOCK
4102e16c 148*
149NOGO JST PLDR END OF TAPE HAS COME.
d670f1ce 150 HLT
151 JMP *-1 NO ESCAPE
152*
4102e16c 153*
d670f1ce 154**********************
155* PUNCH THE DESIRED DATA
156PDAT DAC **
cf7fb3fa 157*
158LOOP CRA MAIN LOOP
159 LDA ELOC
160 SUB ALOC
4102e16c 161 AOA ONE IS MINIMUM
162 STA AVAL AVAILABLE NUMBER OF WORDS
cf7fb3fa 163 SNZ
d670f1ce 164 JMP* PDAT END OF DATA, WE ARE HAPPY, RETURN
cf7fb3fa 165*
4102e16c 166* TRY TO MAKE A ZERO BLOCK
cf7fb3fa 167 LDA ALOC
168 JST CZER COUNT ZERO LOCATIONS - IF ANY
169 CAS ZMIN COMPARE WITH MINIMUM FOR ZERO BLOCK
170 JMP MKZE GO TO MAKE A ZERO BLOCK
171 JMP MKZE GO FOR THE ZERO BLOCK AS WELL
172 JMP FILL PREPARE CONVETIONAL BLOCK
173MKZE CAS AVAL BLOCK TOO BIG??
174 LDA AVAL YES, LIMIT BLOCK SIZE
175 NOP TIGHT FIT
176 JST ZBLK PRODUCE THE THE BLOCK
177 JMP LOOP CONTINUE IN THE MAIN LOOP
178FILL CRA STUFF A PACKET
179 STA BCNT CLEAR BLOCK SIZE
180*
181STUF LDA ALOC
182 ADD BCNT CALCULATE NEW POSITION TO LOOK AT
183 JST CFIL DETERMINE AMOUNT OF CONTIGUOUS DATA
184 ADD BCNT ADD ACTUAL BLOCK SIZE
185 CAS AVAL COMPARE THAT WITH AVAILABLE DATA
186 LDA AVAL TOO MUCH, LIMIT AND GO
187 SKP A TIGHT FIT
188 JMP FIL2 FILL MORE!
189 JST DBLK PRODUCE BLOCK
190 JMP LOOP RETURN TO MAIN LOOP
191*
192FIL2 STA BCNT UPDATE BLOCK SIZE
193 ADD ALOC MAKE NEW STARTING LOCATION
194 JST CZER COUNT FOLLOWING ZEROS
195 CAS ZMIN COMPARE WITH MINIMUM FOR A ZERO BLOCK
196 JMP BEND OK, THERE ARE ENOUGH ZEROS. BLOCK SHALL BE GOOD.
197 JMP BEND
198* NO, WE CONTINUE LOOKING
199 ADD BCNT ADD CURRENT BLOCK SIZE
200 STA BCNT AND UPDATE IT
201 JMP STUF STUFF MORE
202*
203BEND LDA BCNT
204 JST DBLK PUNCH THE BLOCK
205 JMP LOOP BACK TO MAIN LOOP
206*
d670f1ce 207**************************
cf7fb3fa 208*
209AVAL DEC 0 AVAILABLE DATA SIZE
210IPTR DEC 0 IMAGINARY POINTER
211BCNT DEC 0 PACKET SIZE COUNTER
212ZMIN DEC 8 MIN AMOUNT OF ZEROS FOR A BLOCK BREAK
213STRT DEC 0 ADDRESS FOR AUTO-START
214*
215*
216*******************
217* MAKE A STOP BLOCK
218SBLK DAC **
219 LDA BSTA START CHARACTER
220 ICA
221 ADD TSTP BLOCK TYPE
222 JST SWRD PUNCH THAT
223 JMP* SBLK
224*
225*
226*******************
227* MAKE A GO BLOCK
228GBLK DAC **
229 LDA BSTA START CHARACTER
230 ICA
231 ADD TGO BLOCK TYPE
232 JST SWRD PUNCH THAT
233 JMP* GBLK
234*
235*
236******************
237* MAKE A START ADDRESS BLOCK
238ABLK DAC **
2dbecc75 239 STA CNT2 SAVE THE ADDRESS
cf7fb3fa 240 LDA BSTA START CHARACTER
241 ICA
242 ADD TSAD BLOCK TYPE
243 JST SWRD PUNCH THAT
2dbecc75 244 LDA CNT2
cf7fb3fa 245 JST SWRD
246 JST SWRD
247 JMP* ABLK
248*
249*
250*******************
251* MAKE ZERO BLOCK
252ZBLK DAC ** PRODUCE A ZERO BLOCK
2dbecc75 253 STA CNT2 STORE SIZE OF BLOCK
cf7fb3fa 254 LDA BSTA START CHARACTER
255 ICA
256 ADD TZER BLOCK TYPE
257 JST SWRD PUNCH THAT
258 LDA ALOC LOAD START ADDRESS
259 JST SWRD PUNCH START ADDRESS
260 STA CSUM INIT CHECKSUM
2dbecc75 261 LDA CNT2 LOAD SIZE
cf7fb3fa 262 JST SWRD PUNCH SIZE
263 ADD CSUM ADD CHECKSUM
264 JST SWRD PUNCH OUT CHECKSUM
265 LDA ALOC RELOAD POINTER
2dbecc75 266 ADD CNT2 CALCULATE NEW POINTER
cf7fb3fa 267 STA ALOC UPDATE ALOC
268 JMP* ZBLK END
269*
270*
271********************
272* MAKE DATA BLOCK
273DBLK DAC **
2dbecc75 274 STA CNT2 SAVE SIZE
cf7fb3fa 275*
276 LDA BSTA START CHARACTER
277 ICA
278 ADD TDAT DATA BLOCK TYPE
279 JST SWRD PUNCH
280*
281 LDA ALOC START ADDRESS
282 JST SWRD PUNCH IT
283 STA CSUM INIT CHECKSUM
284*
2dbecc75 285 LDA CNT2 PACKET SIZE
cf7fb3fa 286 JST SWRD PUNCH IT
287 ADD CSUM
288 STA CSUM UPDATE CHECKSUM
289*
2dbecc75 290 LDA CNT2
cf7fb3fa 291 TCA
2dbecc75 292 STA CNT2 NOW WE USE IT AS NEG COUNTER
cf7fb3fa 293*
294DDLP LDA* ALOC LOAD DATA
295 JST SWRD PUNCH DATA
296 ADD CSUM
297 STA CSUM UPDATE CHECKSUM
298 IRS ALOC
2dbecc75 299 IRS CNT2
cf7fb3fa 300 JMP DDLP LOOP IT
301 JST SWRD PUNCH CHECKSUM
302 JMP* DBLK BLOCK DONE
303*
304*
305*
306********************
307* COUNT FILLED LOCATIONS
308CFIL DAC **
309 STA PTR STORE ADDRESS TO POINTER
310 LDA SNZ LOAD DISCRIMINATOR OPERATION
311 STA DISC STORE INTO COUNT ROUTINE
312 JST COUN GO AND COUNT IT
313 JMP* CFIL
314*
315********************
316* COUNT ZERO LOCATIONS
317CZER DAC **
318 STA PTR STORE ADDRESS TO POINTER
319 LDA SZE
320 STA DISC
321 JST COUN
322 JMP* CZER
323*
324COUN DAC ** COUNT FILLED OR EMPTY LOCATIONS
325 CRA
2dbecc75 326 STA CNT2 INITIALIZE COUNTER
cf7fb3fa 327CLOP LDA* PTR
328DISC SZE WILL BE DYNAMICALLY OVERWRITTEN
329 JMP ZFIN NOW OTHER KIND OF DATA
2dbecc75 330 IRS CNT2 NOTE DOWN THE FIND
cf7fb3fa 331 IRS PTR POINT TO NEXT LOCATION TO BE TESTED
332 SKP
333 JMP ZFIN ADDRESS OVERFLOW MUST STOP COUNTING
334 JMP CLOP COUNT ON
2dbecc75 335ZFIN LDA CNT2
cf7fb3fa 336 JMP* COUN
337*
338*
339***********************
340*
341PS2 DAC ** PUNCH OUT SECOND STAGE LOADER
342 LDA B2AD LOAD START ADDRESS OF SECOND STAGE LOADER
343 JST P23 CALL PUNCH23 ROUTINE
344 JMP* PS2
345*
346PS3 DAC ** PUNCH OUT SECOND STAGE LOADER
347 LDA S3SC LOAD START CHARACTER
348 OTA 2 PUNCH START CHARACTER
349 JMP *-1
350 LDA B3AD LOAD START ADDRESS OF SECOND STAGE LOADER
351 JST P23 CALL PUNCH23 ROUTINE
352 JMP* PS3
353*
354P23 DAC ** PUNCH OUT A LOADER
355 STA PTR SAVE POINTER
356L23 LDA* PTR
4e8a2859 357 JST SWRD PUNCH OUT CURRENT WORD
cf7fb3fa 358 SNZ
359 JMP* P23 RETURN
cf7fb3fa 360 IRS PTR INCREMENT POINTER
361 JMP L23 LOOP AGAIN
362*
363*
364**********************
365* PUNCH SOME LEADER
366PLDR DAC ** PUNCH LEADER
367 LDA LDRL LOAD LEADER LENGTH
368 TCA COMPLEMENT IT
2dbecc75 369 STA CNT2 STORE TO LEADER COUNTER
cf7fb3fa 370 CRA LEADER IS ZERO
371LLP OTA 2
372 JMP *-1
2dbecc75 373 IRS CNT2
cf7fb3fa 374 JMP LLP
375 JMP* PLDR
376*
377*
378*********************
379* PUNCH ONE WORD OF DATA
380SWRD DAC **
381 ICA
382 OTA 2
383 JMP *-1
384 ICA
385 OTA 2
386 JMP *-1 WAIT
387 JMP* SWRD
388*
389*
390B2AD DAC BO2S START ADDRESS OF SECOND STAGE LOADER
391B3AD DAC BO3S START ADDRESS OF THIRD STAGE LOADER
392*
325547c4 393LDRL DEC 300 LEADER LENGTH
cf7fb3fa 394SZE SZE INSTRUCTION FOR FILL IN
395SNZ SNZ INSTRUCTION FOR FILL IN
396*
397*
398************************************************************************
399* THIS IST THE SECOND STAGE LOADER
400*
2dbecc75 401* IT IS IMPORTANT THAT THERE ARE NO ZERO WORDS IN THIS CODE BECAUSE THE
402* KEY-IN LOADER WORKS ONLY UNTIL IT DETECTS A ZERO WORD.
403*
404BO2S DAC '20 START ADDRESS, ALWAYS '20
cf7fb3fa 405 JMP '10 JUMP BACK INTO KEY-IN LOADER
406*
407*S21 OCP '001 THIS IS THE JUMP-IN LOCATION, WILL GO TO '21
408*
2dbecc75 409 INA '1001 READ FROM PAPER TAPE
410 JMP '17-BO2S+*-1 WAIT
cf7fb3fa 411 SUB '17-BO2S+S3SC STAGE 3 START CHARACTER
412 SZE
413 JMP '17-BO2S+*-4 EAT UP ALL JUNK
414*
2dbecc75 415 INA '1001 READ FROM PAPER TAPE
416 JMP '17-BO2S+*-1 WAIT
417 ICA OTHER CHARACTER
418 INA '001 READ FROM TAPE WITHOUT CLEARING A
419 JMP '17-BO2S+*-1 WAIT
cf7fb3fa 420*
2dbecc75 421 STA '17-BO2S+CNT2 STORE START ADDRESS OF THIRD STAGE
4e8a2859 422* LDA '57 LOOK FOR DEPOSITED OTHER BOOT ADDRESS
423* SZE OK, IF WE FIND SOMETHING THERE...
424* STA '17-BO2S+CNT2 OVERWRITE DEFAULT VALUE
2dbecc75 425 LDA '17-BO2S+CNT2 RELOAD START ADDRESS
426 STA* '17-BO2S+CNT2 STORE THAT ADDRESS INTO ITSELF
4e8a2859 427 IRS '17-BO2S+CNT2 CORRECT STOLEN WORD
4e8a2859 428 LDA '17-BO2S+CNT2 WHERE TO LOAD NOW?
2dbecc75 429 STA '17-BO2S+PTR2 INIT WRITE POINTER
cf7fb3fa 430*
2dbecc75 431LOP INA '1001 READ IN CHARACTER
432 JMP '17-BO2S+*-1 WAIT
433 ICA OTHER CHARACTER
434 INA '001 READ FROM TAPE WITHOUT CLEARING A
435 JMP '17-BO2S+*-1 WAIT
436 SNZ DID WE LOAD A ZERO?
4e8a2859 437 JMP* '17-BO2S+CNT2 JUMP INTO THIRD STAGE LOADER
4e8a2859 438 STA* '17-BO2S+PTR2 STORE DATA
439 IRS '17-BO2S+PTR2 MOVE ON
cf7fb3fa 440 JMP '17-BO2S+LOP FETCH MORE DATA
441*
442S3SC OCT '301 START CHARACTER TO RECOGNIZE STAGE3
2dbecc75 443PTR2 DAC ** MEMORY POINTER
444CNT2 DAC ** LOAD ADDRESS
cf7fb3fa 445*
446*
447************************************************************************
448* HERE COMES THE THIRD STAGE LOADER
449*
450 ORG '600
451BO3S DAC * THAT IS FOR THE SECOND STAGE LOADER
4e8a2859 452*********
2dbecc75 453* COMPLETE THE PAUS ROUTINE
454 LDA PJ1
4e8a2859 455 STA J1
456 CRA
2dbecc75 457 STA PAUS
458 STA JH
459*
460* START LOADING
461 OCP 1 READER ON
cf7fb3fa 462SLOP INA '1001 CRA AND READ
463 JMP *-1
464 SUB BSTA BLOCK START?
465 SZE
466 JMP SLOP BACK TO SEARCH LOOP
467 INA '1001 READ BLOCK TYPE
468 JMP *-1
469 STA BTYP STORE BLOCK TYPE FOR LATER USE
470 CAS TSAD START ADDRESS BLOCK?
471 JMP *+2
472 JMP RSAD READ START ADDRESS BLOCK
473 NOP
474 CAS TGO GO BLOCK?
475 JMP *+2
476 JMP RGO PROCESS GO BLOCK
477 NOP
478 CAS TDAT DATA BLOCK?
479 JMP *+2
480 JMP RBLK READ DATA BLOCK
481 NOP
482 CAS TZER ZERO BLOCK?
483 JMP *+2
484 JMP RBLK READ ZERO BLOCK
485 NOP
486 CAS TSTP STOP BLOCK?
487 JMP *+2
488 JMP RSTP PROCESS STOP BLOCK
489 NOP
2dbecc75 490 LDA EBT ERROR BLOCK TYPE
4e8a2859 491 JST PAUS PAUSE
cf7fb3fa 492 JMP SLOP SEARCH FOR NEW BLOCK
493*
494********************
495* START ADDRESS BLOCK
496RSAD JST LWRD
497 STA RESA
498 JST LWRD
499 SUB RESA
500 SZE
501 JMP CERR CHECKSUM ERROR!
502 JMP SLOP LOOK FOR NEW BLOCK!
503*
504*
505RGO JMP* RESA
506*
507*********************
508* READ DATA OR ZERO BLOCK
509RBLK JST LWRD
510 STA PTR START ADDRESS
511 STA CSUM
512 JST LWRD
513 TCA TWO'S COMPLEMENT
514 STA LEN GO COUNTER
515 TCA TWO'S COMPLEMENT BACK
516 ADD CSUM
517 STA CSUM
518RLP LDA BTYPE
519 CAS TDAT DATA BLOCK?
520 JMP RZER NO
521 JMP RDAT YES
522 JMP RZER NO, CLEAR A
523RDAT JST LWRD
524 STA* PTR
525 ADD CSUM ADD TO CHECKSUM
526 STA CSUM
527EL IRS PTR POINT TO NEXT LOCATION
528 SKP
529 JMP BO3S OVERFLOW!
530 IRS LEN INCREMENT NEG COUNTER
531 JMP RLP READ ON
532*
533 JST LWRD NOW READ IN THE CHECKSUM
534 SUB CSUM
535 SNZ
536 JMP SLOP
537CERR CRA CHECKSUM ERROR HALT
4e8a2859 538 JST PAUS
cf7fb3fa 539 JMP SLOP TRY A NEW BLOCK
540*
541RZER CRA
542 STA* PTR STORE ZERO
543 JMP EL USE END OF LOOP ABOVE
544*******
545* STOP BLOCK
4e8a2859 546RSTP LDA BO3S FOR SHOW
547 JST PAUS
cf7fb3fa 548 JMP* RESA JUMP TO RESTART LOCATION
549*
cf7fb3fa 550*
4e8a2859 551**********************
552* CONSTANTS
553*
554RESA DAC SLOP RESTART ADDRESS
cf7fb3fa 555BSTA DEC 129 BLOCK START CHARACTER
2dbecc75 556EBT OCT '125252 ERROR MESSAGE FOR A REG
cf7fb3fa 557*
558* BLOCK TYPES:
559TSAD OCT '33
560TGO OCT '44
561TZER OCT '55
562TSTP OCT '66
563TDAT OCT '11
564*
565*
566LWRD OCT 66
567 INA '1001 CLEAR A AND INPUT
568 JMP *-1
569 ICA
570 INA '1 INPUT
571 JMP *-1 WAIT
572 JMP* LWRD
573*
574 FIN WRITE OUT LITERALS - IF ANY
4e8a2859 575*******************
576* THE ATTIC OF THE THIRD STAGE LOADER
577PJ1 JMP* PAUS LAST LOCATION THAT WILL BE LOADED FROM TAPE!
2dbecc75 578PAUS DAC ** WILL BE INITIALIZED TO ZERO BEFORE PUNCHING
579JH HLT BECOMES CLEARED ON START OF LOAD
580J1 DAC ** BECOMES JMP* PAUS ON START OF LOAD
4e8a2859 581*
582***** VARIABLES
2dbecc75 583CSUM DAC ** CHECKSUM
584LEN DAC ** LENGTH COUNTER
585BTYP DAC ** BLOCK TYPE
586ALOC *** ** CURRENT LOCATION TO PUNCH
587ELOC *** ** LAST LOCATION TO PUNCH
588PTR DAC ** MEMORY POINTER
4e8a2859 589CNT DAC ** WHERE TO LOAD? CAN BE CHANGED.
cf7fb3fa 590*
591************************************************************
2dbecc75 592 END THAT'S IT, ENJOY!
593