*** empty log message ***
[h316.git] / programs / tools / src / binal.asm
index 8bba1a9347b961b450e60cc4afdc8f4afc903d2a..87de4f5e050e45c153ceb46a5a2771b1243f39b3 100644 (file)
@@ -1,12 +1,68 @@
-* BINARY PUNCH AND LOAD PROGRAM
+* BINAL - BINARY PUNCH AND LOAD PROGRAM (REV. 1.0)
 *
 *
 *
 *
-*  LOAD
-*  FIRST LOC TO A, LAST LOC TO B
-*  RUN IT.
+*  
+*
+*  BINAL - A PAL-AP DROP-IN REPLACEMENT.
+*
+*
+*
+*  AUTHOR
+*  PHILIPP HACHTMANN
+*
+*
+*  VERSION
+*  1.0 (24.04.2006) - INITIAL VERSION
+*
+*
+*
+*  STORAGE REQUIREMENT
+*  ONE SEGMENT
+*
+*
+*  FEATURES:
+*  NO 4/6/6 FORMAT, DIRECT BINARY DATA
+*  BLOCK CHECKSUMS
+*  LOAD AND GO CAPABLE
+*  SUPPORTS ONLY HIGH SPEED PAPER TAPE PUNCH
+*
+*
+*  USAGE
+*  FIRST LOAD THE OBJECT TAPE INTO ANY SECTOR 'XX000 IN MEMORY.
+*  TO PUNCH A SELF LOADING TAPE DO THE FOLLOWING:
+*  -PRESS MSTCLR
+*  -SET P TO 'XX000
+*  -IF LOAD AND GO IS DESIRED, PUT PROGRAM'S START ADDRESS INTO A
+*  -PRESS START
+*  -ENTER THE FIRST ADDRESS TO BE PUNCHED INTO A
+*  -PRESS START
+*  -ENTER THE LAST ADDRESS TO BE PUNCHED INTO A
+*  -PRESS START, BINAL PUNCHES YOUR SYSTEM TAPE
+*
+*  TO MAKE A BINAL SLST TAPE
+*  USE 'XX000 THAT AS FIRST LOCATION TO BE PUNCHED.
+*  THE LAST LOCATION TO BE PUNCHED IS 'XX577, THE REST OF THE SECTOR IS
+*  ALWAYS AND AUTOMATICALLY PUNCHED OUT.
+*
+*  LOADING SLST TAPES
+*  SIMPLY MOUNT THE GENERATED TAPE ON THE HIGH SPEED PAPER TAPE READER
+*  AND LOAD WITH THE STANDARD KEY-IN LOADER.
+*  THE CONTENTS OF THE TAPE GO TO WHERE THEY COME FROM. THE THIRD STAGE 
+*  LOADER GOES TO 'XX600. THIS LOCATION CAN BE ALTERED BY ENTERING AN 
+*  ADDRESS INTO A BEFORE STARTING THE KEY-IN LOADER.
+*  IT IS ALSO POSSIBLE TO ALTER THE THIRD-STAGE LOADER ADDRESS BEFORE
+*  PUNCHING BY DEPOSITING ANOTHER ADDRESS INTO 'XX600.
+*
+*  SPECIAL MODES OF OPERATION
+*  IT IS POSSIBLE TO COLLECT THE OUTPUT OF MULTIPLE RUNS OF BINAL INTO 
+*  ONE SYSTEM TAPE. THIS IS DONE BY SENSE SWITCH SETTINGS:
+*  SSW1 SET - DON'T PUNCH OUT SECOND AND THIRD STAGE LOADERS
+*  SSW2 SET - DON'T PUNCH OUT DATA
+*  SSW3 SET - DON'T PUNCH OUT END OF TAPE/GO BLOCK
+*  SSW4 SET - PUNCH ONLY A GO BLOCK
 *
 *  TAPE FORMAT:
 *
 *  TAPE FORMAT:
-*  THE TAPE CONTAINS DATA BLOCKS.
+*  THE TAPE CONTAINS HIGE DATA BLOCKS.
 *  EVERY BLOCK IS PREPENDED WITH THE BLOCK START CHARACTER
 *  AND THE BLOCK TYPE BYTE.
 *  THEN FOLLOWS THE BLOCK DATA IN 16BIT BIG ENDIAN FORMAT.
 *  EVERY BLOCK IS PREPENDED WITH THE BLOCK START CHARACTER
 *  AND THE BLOCK TYPE BYTE.
 *  THEN FOLLOWS THE BLOCK DATA IN 16BIT BIG ENDIAN FORMAT.
 *       
 ************************************************************************
 *
 *       
 ************************************************************************
 *
-       SUBR    LSTART,BO3S     LOADER START IS GOOD TO KNOW
+       SUBR    LSTART,BO3S     BEGINNING OF THIRD STAGE LOADER
 *
        REL             RELOCATABLE MODE
        ORG     0
 *
 *
        REL             RELOCATABLE MODE
        ORG     0
 *
-       STA     STRT
+       STA     STRT    SAVE AUTO START LOCATION
+       CRA
        HLT             
        STA     ALOC    FIRST LOCATION TO PUNCH
        HLT             
        STA     ALOC    FIRST LOCATION TO PUNCH
+       CRA
        HLT
        STA     ELOC    LAST LOCATION TO PUNCH
 *
        HLT
        STA     ELOC    LAST LOCATION TO PUNCH
 *
+* FIRST SOME PREPARATIONS FOR THE SECOND AND THIRD STAGE LOADERS
+*      CRA
+       STA     PTR2    CLEAR PTR2, SO KEY-IN LOADER WILL STOP THERE.
+       STA     PAUS    TERMINATOR FOR THIRD STAGE LOADER
+*
+* BUT HERE WE GO
        OCP     '0002   START PUNCH (NOT NECESSARY ON MY H316)
        OCP     '0002   START PUNCH (NOT NECESSARY ON MY H316)
+*      
+       SR1             SKIP IF SSW 1 RESET     
+       JMP     NOBO    NO BOOT CODE
        JST     PLDR    PUNCH OUT LEADER
        JST     PS2     PUNCH SECOND STAGE LOADER
        JST     PS3     PUNCH THIRD STAGE LOADER
        JST     PLDR    PUNCH OUT LEADER
        JST     PS2     PUNCH SECOND STAGE LOADER
        JST     PS3     PUNCH THIRD STAGE LOADER
+*
+NOBO   SS2             SKIP IF SSW 2 SET       
+       JST     PDAT    PUNCH OUT DATA
+*      
+       LDA     STRT    START ADDRESS
+       SZE             SET?
+       JST     ABLK    MAKE ADRESS-BLOCK
+*      
+       SR3             SKIP IF SSW3 RESET
+       JMP     NOGO    NO GO/STOP BLOCK
 *      
 *      
+       LDA     STRT    
+       SZE
+       JST     GBLK    MAKE GO BLOCK
+       LDA     STRT
+       SNZ
+       JST     SBLK    MAKE STOP BLOCK
+*
+NOGO   JST     PLDR    END OF TAPE HAS COME.
+       HLT     
+       JMP     *-1     NO ESCAPE
+*
+*
+**********************
+* PUNCH THE DESIRED DATA
+PDAT   DAC     **
 *
 LOOP   CRA             MAIN LOOP
        LDA     ELOC
        SUB     ALOC
 *
 LOOP   CRA             MAIN LOOP
        LDA     ELOC
        SUB     ALOC
-       AOA
-       STA     AVAL    DETERMINED AVAILABLE DATA
+       AOA             ONE IS MINIMUM
+       STA     AVAL    AVAILABLE NUMBER OF WORDS
        SNZ
        SNZ
-       JMP     EDAT    END OF DATA, WE ARE HAPPY
+       JMP*    PDAT    END OF DATA, WE ARE HAPPY, RETURN
 *
 *
-* FIRST TRY TO ESABLISH A ZERO BLOCK
+* TRY TO MAKE A ZERO BLOCK
        LDA     ALOC
        JST     CZER    COUNT ZERO LOCATIONS - IF ANY
        CAS     ZMIN    COMPARE WITH MINIMUM FOR ZERO BLOCK
        LDA     ALOC
        JST     CZER    COUNT ZERO LOCATIONS - IF ANY
        CAS     ZMIN    COMPARE WITH MINIMUM FOR ZERO BLOCK
@@ -112,19 +204,7 @@ BEND       LDA     BCNT
        JST     DBLK    PUNCH THE BLOCK
        JMP     LOOP    BACK TO MAIN LOOP
 *
        JST     DBLK    PUNCH THE BLOCK
        JMP     LOOP    BACK TO MAIN LOOP
 *
-*
-* END OF DATA
-EDAT   LDA     STRT
-       SZE
-       JMP     AUTO    
-       JST     SBLK    MAKE STOP BLOCK
-       JMP     EOT
-AUTO   JST     ABLK    MAKE ADRESS-BLOCK
-       JST     GBLK    MAKE GO-BLOCK
-EOT    JST     PLDR    END OF JOB HAS COME.
-       HLT     
-       JMP     *-1     NO ESCAPE
-*
+**************************
 *
 AVAL   DEC     0       AVAILABLE DATA SIZE
 IPTR   DEC     0       IMAGINARY POINTER
 *
 AVAL   DEC     0       AVAILABLE DATA SIZE
 IPTR   DEC     0       IMAGINARY POINTER
@@ -156,12 +236,12 @@ GBLK      DAC     **
 ******************
 * MAKE A START ADDRESS BLOCK
 ABLK   DAC     **
 ******************
 * MAKE A START ADDRESS BLOCK
 ABLK   DAC     **
-       STA     CNT     SAVE THE ADDRESS
+       STA     CNT2    SAVE THE ADDRESS
        LDA     BSTA    START CHARACTER
        ICA
        ADD     TSAD    BLOCK TYPE
        JST     SWRD    PUNCH THAT
        LDA     BSTA    START CHARACTER
        ICA
        ADD     TSAD    BLOCK TYPE
        JST     SWRD    PUNCH THAT
-       LDA     CNT
+       LDA     CNT2
        JST     SWRD
        JST     SWRD
        JMP*    ABLK        
        JST     SWRD
        JST     SWRD
        JMP*    ABLK        
@@ -170,7 +250,7 @@ ABLK        DAC     **
 *******************
 * MAKE ZERO BLOCK
 ZBLK   DAC     **      PRODUCE A ZERO BLOCK
 *******************
 * MAKE ZERO BLOCK
 ZBLK   DAC     **      PRODUCE A ZERO BLOCK
-       STA     CNT     STORE SIZE OF BLOCK
+       STA     CNT2    STORE SIZE OF BLOCK
        LDA     BSTA    START CHARACTER
        ICA
        ADD     TZER    BLOCK TYPE
        LDA     BSTA    START CHARACTER
        ICA
        ADD     TZER    BLOCK TYPE
@@ -178,12 +258,12 @@ ZBLK      DAC     **      PRODUCE A ZERO BLOCK
        LDA     ALOC    LOAD START ADDRESS
        JST     SWRD    PUNCH START ADDRESS
        STA     CSUM    INIT CHECKSUM
        LDA     ALOC    LOAD START ADDRESS
        JST     SWRD    PUNCH START ADDRESS
        STA     CSUM    INIT CHECKSUM
-       LDA     CNT     LOAD SIZE
+       LDA     CNT2    LOAD SIZE
        JST     SWRD    PUNCH SIZE
        ADD     CSUM    ADD CHECKSUM
        JST     SWRD    PUNCH OUT CHECKSUM
        LDA     ALOC    RELOAD POINTER
        JST     SWRD    PUNCH SIZE
        ADD     CSUM    ADD CHECKSUM
        JST     SWRD    PUNCH OUT CHECKSUM
        LDA     ALOC    RELOAD POINTER
-       ADD     CNT     CALCULATE NEW POINTER
+       ADD     CNT2    CALCULATE NEW POINTER
        STA     ALOC    UPDATE ALOC
        JMP*    ZBLK    END
 *
        STA     ALOC    UPDATE ALOC
        JMP*    ZBLK    END
 *
@@ -191,7 +271,7 @@ ZBLK        DAC     **      PRODUCE A ZERO BLOCK
 ********************
 * MAKE DATA BLOCK
 DBLK   DAC     **
 ********************
 * MAKE DATA BLOCK
 DBLK   DAC     **
-       STA     CNT     SAVE SIZE
+       STA     CNT2    SAVE SIZE
 *
        LDA     BSTA    START CHARACTER
        ICA
 *
        LDA     BSTA    START CHARACTER
        ICA
@@ -202,21 +282,21 @@ DBLK      DAC     **
        JST     SWRD    PUNCH IT
        STA     CSUM    INIT CHECKSUM
 *
        JST     SWRD    PUNCH IT
        STA     CSUM    INIT CHECKSUM
 *
-       LDA     CNT     PACKET SIZE
+       LDA     CNT2    PACKET SIZE
        JST     SWRD    PUNCH IT
        ADD     CSUM    
        STA     CSUM    UPDATE CHECKSUM
 *
        JST     SWRD    PUNCH IT
        ADD     CSUM    
        STA     CSUM    UPDATE CHECKSUM
 *
-       LDA     CNT
+       LDA     CNT2
        TCA
        TCA
-       STA     CNT     NOW WE USE IT AS NEG COUNTER
+       STA     CNT2    NOW WE USE IT AS NEG COUNTER
 *
 DDLP   LDA*    ALOC    LOAD DATA
        JST     SWRD    PUNCH DATA
        ADD     CSUM    
        STA     CSUM    UPDATE CHECKSUM
        IRS     ALOC
 *
 DDLP   LDA*    ALOC    LOAD DATA
        JST     SWRD    PUNCH DATA
        ADD     CSUM    
        STA     CSUM    UPDATE CHECKSUM
        IRS     ALOC
-       IRS     CNT
+       IRS     CNT2
        JMP     DDLP    LOOP IT
        JST     SWRD    PUNCH CHECKSUM
        JMP*    DBLK    BLOCK DONE
        JMP     DDLP    LOOP IT
        JST     SWRD    PUNCH CHECKSUM
        JMP*    DBLK    BLOCK DONE
@@ -243,16 +323,16 @@ CZER      DAC     **
 *      
 COUN   DAC     **      COUNT FILLED OR EMPTY LOCATIONS
        CRA     
 *      
 COUN   DAC     **      COUNT FILLED OR EMPTY LOCATIONS
        CRA     
-       STA     CNT     INITIALIZE COUNTER
+       STA     CNT2    INITIALIZE COUNTER
 CLOP   LDA*    PTR
 DISC   SZE             WILL BE DYNAMICALLY OVERWRITTEN
        JMP     ZFIN    NOW OTHER KIND OF DATA
 CLOP   LDA*    PTR
 DISC   SZE             WILL BE DYNAMICALLY OVERWRITTEN
        JMP     ZFIN    NOW OTHER KIND OF DATA
-       IRS     CNT     NOTE DOWN THE FIND
+       IRS     CNT2    NOTE DOWN THE FIND
        IRS     PTR     POINT TO NEXT LOCATION TO BE TESTED
        SKP             
        JMP     ZFIN    ADDRESS OVERFLOW MUST STOP COUNTING
        JMP     CLOP    COUNT ON
        IRS     PTR     POINT TO NEXT LOCATION TO BE TESTED
        SKP             
        JMP     ZFIN    ADDRESS OVERFLOW MUST STOP COUNTING
        JMP     CLOP    COUNT ON
-ZFIN   LDA     CNT
+ZFIN   LDA     CNT2
        JMP*    COUN
 *      
 *
        JMP*    COUN
 *      
 *
@@ -286,11 +366,11 @@ L23       LDA*    PTR
 PLDR   DAC     **      PUNCH LEADER
        LDA     LDRL    LOAD LEADER LENGTH
        TCA             COMPLEMENT IT
 PLDR   DAC     **      PUNCH LEADER
        LDA     LDRL    LOAD LEADER LENGTH
        TCA             COMPLEMENT IT
-       STA     CNT     STORE TO LEADER COUNTER
+       STA     CNT2    STORE TO LEADER COUNTER
        CRA             LEADER IS ZERO
 LLP    OTA     2
        JMP     *-1
        CRA             LEADER IS ZERO
 LLP    OTA     2
        JMP     *-1
-       IRS     CNT
+       IRS     CNT2
        JMP     LLP
        JMP*    PLDR
 *      
        JMP     LLP
        JMP*    PLDR
 *      
@@ -318,52 +398,50 @@ SNZ       SNZ             INSTRUCTION FOR FILL IN
 ************************************************************************
 * THIS IST THE SECOND STAGE LOADER
 *
 ************************************************************************
 * THIS IST THE SECOND STAGE LOADER
 *
-       ORG     '317    ONLY FOR DEVELOPMENT!
-BO2S   OCT     '20     START ADDRESS
+* IT IS IMPORTANT THAT THERE ARE NO ZERO WORDS IN THIS CODE BECAUSE THE
+* KEY-IN LOADER WORKS ONLY UNTIL IT DETECTS A ZERO WORD.
+*
+BO2S   DAC     '20     START ADDRESS, ALWAYS '20
        JMP     '10     JUMP BACK INTO KEY-IN LOADER
 *
 *S21   OCP     '001    THIS IS THE JUMP-IN LOCATION, WILL GO TO '21
 *      
        JMP     '10     JUMP BACK INTO KEY-IN LOADER
 *
 *S21   OCP     '001    THIS IS THE JUMP-IN LOCATION, WILL GO TO '21
 *      
-       INA     '1001
-       JMP     '17-BO2S+*-1
+       INA     '1001           READ FROM PAPER TAPE
+       JMP     '17-BO2S+*-1    WAIT
        SUB     '17-BO2S+S3SC   STAGE 3 START CHARACTER
        SZE
        JMP     '17-BO2S+*-4    EAT UP ALL JUNK
 *
        SUB     '17-BO2S+S3SC   STAGE 3 START CHARACTER
        SZE
        JMP     '17-BO2S+*-4    EAT UP ALL JUNK
 *
-       INA     '1001           READ WITH CLEAR
-       JMP     '17-BO2S+*-1
-       ICA
-       INA     '001            READ WITHOUT CLEAR
-       JMP     '17-BO2S+*-1
+       INA     '1001           READ FROM PAPER TAPE
+       JMP     '17-BO2S+*-1    WAIT
+       ICA                     OTHER CHARACTER
+       INA     '001            READ FROM TAPE WITHOUT CLEARING A
+       JMP     '17-BO2S+*-1    WAIT
 *
 *
-       STA     '17-BO2S+CNT2   STORE START ADDRESS
-       STA*    '17-BO2S+CNT2   STORE START IN START
+       STA     '17-BO2S+CNT2   STORE START ADDRESS OF THIRD STAGE
 *      LDA     '57             LOOK FOR DEPOSITED OTHER BOOT ADDRESS
 *      SZE                     OK, IF WE FIND SOMETHING THERE...
 *      STA     '17-BO2S+CNT2   OVERWRITE DEFAULT VALUE 
 *      LDA     '57             LOOK FOR DEPOSITED OTHER BOOT ADDRESS
 *      SZE                     OK, IF WE FIND SOMETHING THERE...
 *      STA     '17-BO2S+CNT2   OVERWRITE DEFAULT VALUE 
+       LDA     '17-BO2S+CNT2   RELOAD START ADDRESS
+       STA*    '17-BO2S+CNT2   STORE THAT ADDRESS INTO ITSELF  
        IRS     '17-BO2S+CNT2   CORRECT STOLEN WORD     
        IRS     '17-BO2S+CNT2   CORRECT STOLEN WORD     
-       LDA     '17-BO2S+CNT2
-*      JMP     '776
-*
        LDA     '17-BO2S+CNT2   WHERE TO LOAD NOW?
        LDA     '17-BO2S+CNT2   WHERE TO LOAD NOW?
-       STA     '17-BO2S+PTR2   INIT POINTER
+       STA     '17-BO2S+PTR2   INIT WRITE POINTER
 *      
 *      
-LOP    INA     '1001   READ IN CHARACTER
-       JMP     '17-BO2S+*-1
-       ICA
-       INA     '001    READ OTHER CHARACTER
-       JMP     '17-BO2S+*-1
-       SNZ
+LOP    INA     '1001           READ IN CHARACTER
+       JMP     '17-BO2S+*-1    WAIT
+       ICA                     OTHER CHARACTER
+       INA     '001            READ FROM TAPE WITHOUT CLEARING A
+       JMP     '17-BO2S+*-1    WAIT
+       SNZ                     DID WE LOAD A ZERO?
        JMP*    '17-BO2S+CNT2   JUMP INTO THIRD STAGE LOADER
        JMP*    '17-BO2S+CNT2   JUMP INTO THIRD STAGE LOADER
-*      JMP     '665
        STA*    '17-BO2S+PTR2   STORE DATA
        IRS     '17-BO2S+PTR2   MOVE ON
        JMP     '17-BO2S+LOP    FETCH MORE DATA
 *      
 S3SC   OCT     '301    START CHARACTER TO RECOGNIZE STAGE3
        STA*    '17-BO2S+PTR2   STORE DATA
        IRS     '17-BO2S+PTR2   MOVE ON
        JMP     '17-BO2S+LOP    FETCH MORE DATA
 *      
 S3SC   OCT     '301    START CHARACTER TO RECOGNIZE STAGE3
-PTR2   DAC     **      GENERAL PURPOSE MEMORY POINTER
-CNT2   DAC     **      WHERE TO LOAD? CAN BE CHANGED.
-BO2E   OCT     10600   ZERO-TERMINATOR
+PTR2   DAC     **      MEMORY POINTER
+CNT2   DAC     **      LOAD ADDRESS
 *
 *
 ************************************************************************
 *
 *
 ************************************************************************
@@ -372,13 +450,15 @@ BO2E      OCT     10600   ZERO-TERMINATOR
        ORG     '600
 BO3S   DAC     *       THAT IS FOR THE SECOND STAGE LOADER
 *********
        ORG     '600
 BO3S   DAC     *       THAT IS FOR THE SECOND STAGE LOADER
 *********
-* COMPLETE THE ATTIC
-       LDA     PJ1     COMPLETE THE PAUS ROUTINE
+* COMPLETE THE PAUS ROUTINE
+       LDA     PJ1     
        STA     J1
        CRA
        STA     J1
        CRA
-       STA     JH      ENSURE HALT INSTRUCTION
-*      
-       OCP     1       READER ON (UNNECESSARY?)
+       STA     PAUS
+       STA     JH
+*
+* START LOADING        
+       OCP     1       READER ON
 SLOP   INA     '1001   CRA AND READ
        JMP     *-1
        SUB     BSTA    BLOCK START?
 SLOP   INA     '1001   CRA AND READ
        JMP     *-1
        SUB     BSTA    BLOCK START?
@@ -407,10 +487,9 @@ SLOP       INA     '1001   CRA AND READ
        JMP     *+2
        JMP     RSTP    PROCESS STOP BLOCK
        NOP
        JMP     *+2
        JMP     RSTP    PROCESS STOP BLOCK
        NOP
-       LDA     ='125252        ERROR BLOCK TYPE
+       LDA     EBT     ERROR BLOCK TYPE
        JST     PAUS    PAUSE
        JMP     SLOP    SEARCH FOR NEW BLOCK
        JST     PAUS    PAUSE
        JMP     SLOP    SEARCH FOR NEW BLOCK
-       FIN
 *
 ********************
 * START ADDRESS BLOCK
 *
 ********************
 * START ADDRESS BLOCK
@@ -474,6 +553,7 @@ RSTP        LDA     BO3S    FOR SHOW
 *
 RESA   DAC     SLOP    RESTART ADDRESS
 BSTA   DEC     129     BLOCK START CHARACTER
 *
 RESA   DAC     SLOP    RESTART ADDRESS
 BSTA   DEC     129     BLOCK START CHARACTER
+EBT    OCT     '125252         ERROR MESSAGE FOR A REG
 *
 * BLOCK TYPES:
 TSAD   OCT     '33
 *
 * BLOCK TYPES:
 TSAD   OCT     '33
@@ -495,21 +575,19 @@ LWRD      OCT     66
 *******************
 * THE ATTIC OF THE THIRD STAGE LOADER
 PJ1    JMP*    PAUS    LAST LOCATION THAT WILL BE LOADED FROM TAPE!
 *******************
 * THE ATTIC OF THE THIRD STAGE LOADER
 PJ1    JMP*    PAUS    LAST LOCATION THAT WILL BE LOADED FROM TAPE!
-PAUS   DAC     **
-JH     HLT             THIS WILL STAY A HALT
-J1     DAC     **      WILL BE: JMP* PAUS
+PAUS   DAC     **      WILL BE INITIALIZED TO ZERO BEFORE PUNCHING
+JH     HLT             BECOMES CLEARED ON START OF LOAD
+J1     DAC     **      BECOMES JMP* PAUS ON START OF LOAD
 *
 ***** VARIABLES
 *
 ***** VARIABLES
-CSUM   OCT     66      CHECKSUM
-LEN    OCT     66      LENGTH TO GO
-BTYP   OCT     66      BLOCK TYPE
-*
-*******************
-* VARIABLES OF THE MAIN PROGRAM
-ALOC   ***     **      NEXT WORD TO BE PUNCHED OUT
-ELOC   ***     **      LAST WORD TO BE PUNCHED OUT
-PTR    DAC     **      GENERAL PURPOSE MEMORY POINTER
+CSUM   DAC     **      CHECKSUM
+LEN    DAC     **      LENGTH COUNTER
+BTYP   DAC     **      BLOCK TYPE
+ALOC   ***     **      CURRENT LOCATION TO PUNCH
+ELOC   ***     **      LAST LOCATION TO PUNCH
+PTR    DAC     **      MEMORY POINTER
 CNT    DAC     **      WHERE TO LOAD? CAN BE CHANGED.
 *
 ************************************************************
 CNT    DAC     **      WHERE TO LOAD? CAN BE CHANGED.
 *
 ************************************************************
-       END
+       END             THAT'S IT, ENJOY!
+