_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

T.BITS

FILE INFORMATION

FILENAME(S): T.BITS

FILE TYPE(S): PRG

FILE SIZE: 7.1K

FIRST SEEN: 2025-11-30 18:12:10

APPEARS ON: 1 disk(s)

FILE HASH

85c7dff772b09a558b1bc6bd23aa0e421c651d3a69b5e0a40fbe2a24d1e56160

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
LOADSTAR 48 S 1 T.BITS PRG Sailor, Ganheden 25 2 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 00 80 5E 55 3A 5A 45 52  4F 0D 0D 20 20 20 20 20  |..^U:ZERO..     |
00000010: 20 20 C2 C9 D4 D3 3A 20  D4 48 45 20 C3 C8 C5 D8  |  ....: .HE ....|
00000020: D3 D5 CD 20 D2 4F 55 54  49 4E 45 0D 0D 20 20 20  |... .OUTINE..   |
00000030: 20 20 20 20 20 20 20 20  42 59 20 CD 49 4B 45 20  |        BY .IKE |
00000040: CD 41 59 4E 41 52 44 0D  0D 20 20 20 20 C4 55 52  |.AYNARD..    .UR|
00000050: 49 4E 47 20 54 48 45 20  45 56 4F 4C 55 54 49 4F  |ING THE EVOLUTIO|
00000060: 4E 20 4F 46 20 4F 55 52  0D 4C 41 54 45 53 54 20  |N OF OUR.LATEST |
00000070: 4F 50 45 52 41 54 49 4E  47 20 53 59 53 54 45 4D  |OPERATING SYSTEM|
00000080: 2C 20 4D 41 4E 59 20 4D  41 43 48 49 4E 45 0D 4C  |, MANY MACHINE.L|
00000090: 41 4E 47 55 41 47 45 20  52 4F 55 54 49 4E 45 53  |ANGUAGE ROUTINES|
000000A0: 20 57 45 52 45 20 44 45  56 45 4C 4F 50 45 44 20  | WERE DEVELOPED |
000000B0: 54 4F 0D 48 45 4C 50 20  4D 41 4B 45 20 45 56 45  |TO.HELP MAKE EVE|
000000C0: 52 59 20 41 53 50 45 43  54 20 41 53 20 46 41 53  |RY ASPECT AS FAS|
000000D0: 54 20 41 53 0D 50 4F 53  53 49 42 4C 45 2E 0D 0D  |T AS.POSSIBLE...|
000000E0: 20 20 20 20 D4 48 45 20  46 49 52 53 54 20 47 52  |    .HE FIRST GR|
000000F0: 4F 55 50 20 4F 46 20 52  4F 55 54 49 4E 45 53 20  |OUP OF ROUTINES |
00000100: 43 41 4E 0D 42 45 20 46  4F 55 4E 44 20 49 4E 20  |CAN.BE FOUND IN |
00000110: 54 48 45 20 46 49 4C 45  20 22 C6 C9 CC C5 20 C8  |THE FILE ".... .|
00000120: C1 CE C4 CC C5 D2 2E CF  22 2E 0D D4 48 49 53 20  |........"...HIS |
00000130: 46 49 4C 45 20 43 4F 4E  54 41 49 4E 53 20 54 48  |FILE CONTAINS TH|
00000140: 52 45 45 20 52 4F 55 54  49 4E 45 53 3A 0D C3 C8  |REE ROUTINES:...|
00000150: C5 D8 D3 D5 CD 2C 20 C3  CF D0 D9 CD C5 CD 20 41  |....., ....... A|
00000160: 4E 44 20 C2 CC CF C1 C4  2E 20 20 D4 48 49 53 0D  |ND ......  .HIS.|
00000170: 4D 4F 4E 54 48 20 57 45  27 4C 4C 20 43 4F 56 45  |MONTH WE'LL COVE|
00000180: 52 20 54 48 45 20 C3 C8  C5 D8 D3 D5 CD 0D 52 4F  |R THE ........RO|
00000190: 55 54 49 4E 45 2E 0D 0D  0D 20 20 20 20 D4 48 49  |UTINE....    .HI|
000001A0: 53 20 52 4F 55 54 49 4E  45 20 52 55 4E 53 20 54  |S ROUTINE RUNS T|
000001B0: 48 52 4F 55 47 48 20 41  4E 20 41 52 45 41 0D 4F  |HROUGH AN AREA.O|
000001C0: 46 20 4D 45 4D 4F 52 59  20 41 4E 44 20 41 44 44  |F MEMORY AND ADD|
000001D0: 53 20 41 4C 4C 20 4F 46  20 54 48 45 20 42 59 54  |S ALL OF THE BYT|
000001E0: 45 53 0D 54 4F 47 45 54  48 45 52 20 4C 45 41 56  |ES.TOGETHER LEAV|
000001F0: 49 4E 47 20 54 48 45 20  47 52 41 4E 44 20 54 4F  |ING THE GRAND TO|
00000200: 54 41 4C 20 49 4E 20 41  0D 54 57 4F 2D 42 59 54  |TAL IN A.TWO-BYT|
00000210: 45 20 41 44 44 52 45 53  53 2E 20 C9 46 20 54 48  |E ADDRESS. .F TH|
00000220: 45 20 54 4F 54 41 4C 20  4F 46 20 54 48 45 0D 41  |E TOTAL OF THE.A|
00000230: 52 45 41 20 59 4F 55 20  43 48 45 43 4B 20 45 58  |REA YOU CHECK EX|
00000240: 43 45 45 44 53 20 36 35  35 33 35 2C 20 54 48 45  |CEEDS 65535, THE|
00000250: 0D 48 49 47 48 45 53 54  20 4E 55 4D 42 45 52 20  |.HIGHEST NUMBER |
00000260: 54 48 41 54 20 43 41 4E  20 42 45 20 53 54 4F 52  |THAT CAN BE STOR|
00000270: 45 44 20 49 4E 0D 54 57  4F 20 42 59 54 45 53 2C  |ED IN.TWO BYTES,|
00000280: 20 54 48 45 20 54 4F 54  41 4C 20 57 49 4C 4C 20  | THE TOTAL WILL |
00000290: 52 4F 4C 4C 20 4F 56 45  52 0D 54 4F 20 5A 45 52  |ROLL OVER.TO ZER|
000002A0: 4F 20 41 4E 44 20 43 4F  4E 54 49 4E 55 45 20 46  |O AND CONTINUE F|
000002B0: 52 4F 4D 20 54 48 45 52  45 2E 0D 0D 20 20 20 20  |ROM THERE...    |
000002C0: D4 48 45 20 C3 C8 C5 D8  D3 D5 CD 20 52 4F 55 54  |.HE ....... ROUT|
000002D0: 49 4E 45 20 49 53 20 55  53 45 44 20 57 48 45 4E  |INE IS USED WHEN|
000002E0: 0D 59 4F 55 20 52 45 43  4F 4E 4E 45 43 54 20 54  |.YOU RECONNECT T|
000002F0: 4F 20 CC CF C1 C4 D3 D4  C1 D2 2E 20 20 D7 48 49  |O .........  .HI|
00000300: 4C 45 20 54 48 45 0D 22  D0 4C 45 41 53 45 20 57  |LE THE.".LEASE W|
00000310: 41 49 54 22 20 4D 45 53  53 41 47 45 20 49 53 20  |AIT" MESSAGE IS |
00000320: 42 45 49 4E 47 0D 44 49  53 50 4C 41 59 45 44 2C  |BEING.DISPLAYED,|
00000330: 20 54 48 45 20 C3 C8 C5  D8 D3 D5 CD 20 52 4F 55  | THE ....... ROU|
00000340: 54 49 4E 45 20 49 53 0D  42 55 53 59 20 43 48 45  |TINE IS.BUSY CHE|
00000350: 43 4B 49 4E 47 20 44 49  46 46 45 52 45 4E 54 20  |CKING DIFFERENT |
00000360: 41 52 45 41 53 20 4F 46  20 59 4F 55 52 0D 36 34  |AREAS OF YOUR.64|
00000370: 27 53 20 4D 45 4D 4F 52  59 20 54 4F 20 53 45 45  |'S MEMORY TO SEE|
00000380: 20 49 46 20 54 48 41 54  20 41 52 45 41 20 48 41  | IF THAT AREA HA|
00000390: 53 0D 42 45 45 4E 20 43  4F 52 52 55 50 54 45 44  |S.BEEN CORRUPTED|
000003A0: 20 42 59 20 54 48 45 20  22 D2 D5 CE 20 C9 D4 22  | BY THE "... .."|
000003B0: 0D 50 52 4F 47 52 41 4D  2E 0D 0D 0D 20 20 20 20  |.PROGRAM....    |
000003C0: D7 48 45 4E 20 C3 C8 C5  D8 D3 D5 CD 20 46 49 4E  |.HEN ....... FIN|
000003D0: 44 53 20 54 48 41 54 20  41 4E 20 41 52 45 41 0D  |DS THAT AN AREA.|
000003E0: 4F 46 20 4D 45 4D 4F 52  59 20 48 41 53 20 4E 4F  |OF MEMORY HAS NO|
000003F0: 54 20 42 45 45 4E 20 43  4F 52 52 55 50 54 45 44  |T BEEN CORRUPTED|
00000400: 2C 20 49 54 0D 44 4F 45  53 4E 27 54 20 48 41 56  |, IT.DOESN'T HAV|
00000410: 45 20 54 4F 20 4C 4F 41  44 20 54 48 41 54 20 52  |E TO LOAD THAT R|
00000420: 4F 55 54 49 4E 45 20 41  4E 44 0D 54 48 41 54 20  |OUTINE AND.THAT |
00000430: 4D 45 41 4E 53 20 49 54  20 57 49 4C 4C 20 54 41  |MEANS IT WILL TA|
00000440: 4B 45 20 4C 45 53 53 20  54 49 4D 45 20 54 4F 0D  |KE LESS TIME TO.|
00000450: 52 45 43 4F 4E 4E 45 43  54 20 54 4F 20 54 48 45  |RECONNECT TO THE|
00000460: 20 4D 41 49 4E 20 4D 45  4E 55 2E 0D 0D 20 20 20  | MAIN MENU...   |
00000470: 20 D4 48 49 53 20 52 4F  55 54 49 4E 45 20 57 41  | .HIS ROUTINE WA|
00000480: 53 20 57 52 49 54 54 45  4E 20 57 49 54 48 20 54  |S WRITTEN WITH T|
00000490: 48 45 0D CD C5 D2 CC C9  CE 20 41 53 53 45 4D 42  |HE....... ASSEMB|
000004A0: 4C 45 52 20 41 4E 44 2C  20 54 48 45 52 45 46 4F  |LER AND, THEREFO|
000004B0: 52 45 2C 20 49 53 0D 53  48 4F 57 4E 20 49 4E 20  |RE, IS.SHOWN IN |
000004C0: CD C5 D2 CC C9 CE 20 46  4F 52 4D 41 54 2E 20 20  |...... FORMAT.  |
000004D0: D7 49 54 48 20 41 20 46  45 57 0D 4D 49 4E 4F 52  |.ITH A FEW.MINOR|
000004E0: 20 4D 4F 44 49 46 49 43  41 54 49 4F 4E 53 20 59  | MODIFICATIONS Y|
000004F0: 4F 55 20 53 48 4F 55 4C  44 20 42 45 0D 41 42 4C  |OU SHOULD BE.ABL|
00000500: 45 20 54 4F 20 45 4E 54  45 52 20 54 48 45 20 43  |E TO ENTER THE C|
00000510: 4F 44 45 20 49 4E 54 4F  20 59 4F 55 52 20 4F 57  |ODE INTO YOUR OW|
00000520: 4E 0D 41 53 53 45 4D 42  4C 45 52 2E 0D 0D 20 20  |N.ASSEMBLER...  |
00000530: 20 20 C9 4E 20 54 48 45  20 45 58 50 4C 41 4E 41  |  .N THE EXPLANA|
00000540: 54 49 4F 4E 53 2C 20 54  48 45 53 45 0D 41 42 42  |TIONS, THESE.ABB|
00000550: 52 45 56 49 41 54 49 4F  4E 53 20 41 52 45 20 55  |REVIATIONS ARE U|
00000560: 53 45 44 2E 0D 0D 20 5B  C1 5D 20 3D 20 C1 43 43  |SED... [.] = .CC|
00000570: 55 4D 55 4C 41 54 4F 52  20 20 5B D8 5D 20 3D 20  |UMULATOR  [.] = |
00000580: D8 20 D2 45 47 49 53 54  45 52 0D 20 5B D9 5D 20  |. .EGISTER. [.] |
00000590: 3D 20 D9 20 D2 45 47 49  53 54 45 52 20 20 20 22  |= . .EGISTER   "|
000005A0: 3B 22 20 3D 20 D2 45 4D  41 52 4B 0D 20 20 20 C1  |;" = .EMARK.   .|
000005B0: 4C 4C 20 4E 55 4D 42 45  52 53 20 53 48 4F 57 4E  |LL NUMBERS SHOWN|
000005C0: 20 41 52 45 20 49 4E 20  C4 C5 C3 C9 CD C1 CC 21  | ARE IN .......!|
000005D0: 0D 0D 20 20 20 20 D4 48  45 20 46 4F 4C 4C 4F 57  |..    .HE FOLLOW|
000005E0: 49 4E 47 20 47 52 4F 55  50 20 4F 46 20 C5 D1 D5  |ING GROUP OF ...|
000005F0: 27 53 20 41 52 45 0D 54  48 45 20 C5 D1 D5 C1 D4  |'S ARE.THE .....|
00000600: C5 D3 20 46 4F 52 20 54  48 45 20 43 4F 44 45 2E  |.. FOR THE CODE.|
00000610: 20 D4 48 45 59 20 54 45  4C 4C 0D 54 48 45 20 41  | .HEY TELL.THE A|
00000620: 44 44 52 45 53 53 45 53  20 55 53 45 44 20 46 4F  |DDRESSES USED FO|
00000630: 52 20 45 41 43 48 20 53  59 4D 42 4F 4C 49 43 0D  |R EACH SYMBOLIC.|
00000640: 57 4F 52 44 20 28 4C 41  42 45 4C 29 2E 0D 0D 20  |WORD (LABEL)... |
00000650: 20 20 20 20 20 20 20 20  20 20 20 20 20 CF D2 C7  |             ...|
00000660: 20 33 32 37 36 38 0D 0D  20 20 C3 C8 CB C3 CF CD  | 32768..  ......|
00000670: 20 20 20 20 20 20 C5 D1  D5 20 20 20 34 34 37 39  |      ...   4479|
00000680: 37 0D 20 20 C6 D2 CD C5  D6 C1 CC 20 20 20 20 20  |7.  .......     |
00000690: C5 D1 D5 20 20 20 34 34  34 34 36 0D 20 20 C6 C1  |...   44446.  ..|
000006A0: C3 D4 CF C9 CE D4 20 20  20 20 C5 D1 D5 20 20 20  |......    ...   |
000006B0: 34 38 32 38 33 0D 20 20  D3 D4 C1 D2 D4 20 20 20  |48283.  .....   |
000006C0: 20 20 20 20 C5 D1 D5 20  20 20 32 35 31 0D 20 20  |    ...   251.  |
000006D0: C6 C1 C3 20 20 20 20 20  20 20 20 20 C5 D1 D5 20  |...         ... |
000006E0: 20 20 39 37 0D 20 20 D2  C1 CD D3 C9 C7 20 20 20  |  97.  ......   |
000006F0: 20 20 20 C5 D1 D5 20 20  20 31 0D 20 20 D3 D4 C1  |   ...   1.  ...|
00000700: D4 D5 D3 20 20 20 20 20  20 C5 D1 D5 20 20 20 32  |...      ...   2|
00000710: 0D 0D 0D 0D 0D 20 20 20  20 C6 49 52 53 54 2C 20  |.....    .IRST, |
00000720: 57 45 20 50 41 52 53 45  20 54 48 45 20 53 54 41  |WE PARSE THE STA|
00000730: 52 54 49 4E 47 0D 41 44  44 52 45 53 53 2C 20 45  |RTING.ADDRESS, E|
00000740: 4E 44 49 4E 47 20 41 44  44 52 45 53 53 20 41 4E  |NDING ADDRESS AN|
00000750: 44 20 54 48 45 0D 43 48  45 58 53 55 4D 20 4E 55  |D THE.CHEXSUM NU|
00000760: 4D 42 45 52 20 46 52 4F  4D 20 54 48 45 20 D3 D9  |MBER FROM THE ..|
00000770: D3 20 53 54 41 54 45 4D  45 4E 54 0D 57 48 49 43  |. STATEMENT.WHIC|
00000780: 48 20 57 45 27 4C 4C 20  55 53 45 20 49 4E 20 C2  |H WE'LL USE IN .|
00000790: C1 D3 C9 C3 20 54 4F 20  43 41 4C 4C 20 54 48 45  |.... TO CALL THE|
000007A0: 0D C3 C8 C5 D8 D3 D5 CD  20 52 4F 55 54 49 4E 45  |........ ROUTINE|
000007B0: 2E 20 20 D4 48 49 53 20  49 53 20 44 4F 4E 45 20  |.  .HIS IS DONE |
000007C0: 42 59 0D 43 41 4C 4C 49  4E 47 20 C7 C5 D4 CE D5  |BY.CALLING .....|
000007D0: CD 20 57 48 49 43 48 20  57 49 4C 4C 20 42 45 0D  |. WHICH WILL BE.|
000007E0: 44 49 53 43 55 53 53 45  44 20 4C 41 54 45 52 20  |DISCUSSED LATER |
000007F0: 49 4E 20 54 48 45 20 43  4F 44 45 2E 0D 0D 20 20  |IN THE CODE...  |
00000800: 20 20 20 20 20 20 20 20  20 20 CA D3 D2 20 C7 C5  |          ... ..|
00000810: D4 CE D5 CD 20 20 3B D0  55 54 20 53 54 41 52 54  |....  ;.UT START|
00000820: 49 4E 47 0D 20 20 20 20  20 20 20 20 20 20 20 20  |ING.            |
00000830: D3 D4 D8 20 D3 D4 C1 D2  D4 20 20 20 3B 41 44 44  |... .....   ;ADD|
00000840: 52 45 53 53 20 49 4E 0D  20 20 20 20 20 20 20 20  |RESS IN.        |
00000850: 20 20 20 20 D3 D4 C1 20  D3 D4 C1 D2 D4 2B 31 20  |    ... .....+1 |
00000860: 3B D3 D4 C1 D2 D4 2F D3  D4 C1 D2 D4 2B 31 0D 0D  |;...../.....+1..|
00000870: 20 20 20 20 20 20 20 20  20 20 20 20 CA D3 D2 20  |            ... |
00000880: C7 C5 D4 CE D5 CD 20 20  3B 20 D0 55 54 20 45 4E  |......  ; .UT EN|
00000890: 44 49 4E 47 0D 20 20 20  20 20 20 20 20 20 20 20  |DING.           |
000008A0: 20 D3 D4 D8 20 C5 CE C4  20 20 20 20 20 3B 20 41  | ... ...     ; A|
000008B0: 44 44 52 45 53 53 20 49  4E 0D 20 20 20 20 20 20  |DDRESS IN.      |
000008C0: 20 20 20 20 20 20 D3 D4  C1 20 C5 CE C4 2B 31 20  |      ... ...+1 |
000008D0: 20 20 3B 20 C5 CE C4 20  2F 20 C5 CE C4 2B 31 0D  |  ; ... / ...+1.|
000008E0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 CA D3 D2  |.            ...|
000008F0: 20 C7 C5 D4 CE D5 CD 20  20 3B 20 D0 55 54 20 43  | ......  ; .UT C|
00000900: 48 45 58 53 55 4D 0D 20  20 20 20 20 20 20 20 20  |HEXSUM.         |
00000910: 20 20 20 D3 D4 D8 20 C3  C8 C5 C3 CB 20 20 20 3B  |   ... .....   ;|
00000920: 20 49 4E 20 C3 C8 C5 C3  CB 0D 20 20 20 20 20 20  | IN ......      |
00000930: 20 20 20 20 20 20 D3 D4  C1 20 C3 C8 C5 C3 CB 2B  |      ... .....+|
00000940: 31 20 3B 20 41 4E 44 20  C3 C8 C5 C3 CB 2B 31 0D  |1 ; AND .....+1.|
00000950: 0D 20 20 20 20 C2 45 46  4F 52 45 20 57 45 20 47  |.    .EFORE WE G|
00000960: 45 54 20 53 54 41 52 54  45 44 20 49 4E 20 54 48  |ET STARTED IN TH|
00000970: 45 20 4C 4F 4F 50 2C 0D  57 45 20 4E 45 45 44 20  |E LOOP,.WE NEED |
00000980: 54 4F 20 49 4E 49 54 49  41 4C 49 5A 45 20 54 48  |TO INITIALIZE TH|
00000990: 45 20 43 48 45 58 53 55  4D 0D 4E 55 4D 42 45 52  |E CHEXSUM.NUMBER|
000009A0: 2E 0D 0D CE CF D4 C5 3A  20 C3 C8 C5 C3 CB 20 49  |.......: ..... I|
000009B0: 53 20 54 48 45 20 50 52  45 44 45 54 45 52 4D 49  |S THE PREDETERMI|
000009C0: 4E 45 44 0D 20 20 20 20  20 20 43 48 45 58 53 55  |NED.      CHEXSU|
000009D0: 4D 20 4E 55 4D 42 45 52  2E 20 20 C9 46 20 54 48  |M NUMBER.  .F TH|
000009E0: 45 0D 20 20 20 20 20 20  43 41 4C 43 55 4C 41 54  |E.      CALCULAT|
000009F0: 45 44 20 43 48 45 58 53  55 4D 20 4E 55 4D 42 45  |ED CHEXSUM NUMBE|
00000A00: 52 0D 20 20 20 20 20 20  44 4F 45 53 4E 27 54 20  |R.      DOESN'T |
00000A10: 45 51 55 41 4C 20 C3 C8  C5 C3 CB 2C 20 54 48 45  |EQUAL ....., THE|
00000A20: 4E 20 54 48 41 54 0D 20  20 20 20 20 20 46 49 4C  |N THAT.      FIL|
00000A30: 45 20 4D 55 53 54 20 42  45 20 CC CF C1 C4 45 44  |E MUST BE ....ED|
00000A40: 20 41 47 41 49 4E 2E 0D  0D 20 20 20 20 20 20 C3  | AGAIN...      .|
00000A50: C8 C5 D8 20 49 53 20 54  48 45 20 4E 55 4D 42 45  |... IS THE NUMBE|
00000A60: 52 20 41 42 4F 55 54 20  54 4F 20 42 45 0D 20 20  |R ABOUT TO BE.  |
00000A70: 20 20 20 20 43 41 4C 43  55 4C 41 54 45 44 20 42  |    CALCULATED B|
00000A80: 59 20 54 48 45 20 52 4F  55 54 49 4E 45 2E 0D 0D  |Y THE ROUTINE...|
00000A90: 20 20 20 20 20 20 20 20  20 20 20 20 CC C4 C1 20  |            ... |
00000AA0: 23 30 30 0D 20 20 20 20  20 20 20 20 20 20 20 20  |#00.            |
00000AB0: D3 D4 C1 20 C3 C8 C5 D8  0D 20 20 20 20 20 20 20  |... .....       |
00000AC0: 20 20 20 20 20 D3 D4 C1  20 C3 C8 C5 D8 2B 31 0D  |     ... ....+1.|
00000AD0: 0D 0D 20 20 20 20 CE 4F  57 20 57 45 20 43 41 4E  |..    .OW WE CAN|
00000AE0: 20 4C 4F 4F 50 20 46 52  4F 4D 20 D3 D4 C1 D2 D4  | LOOP FROM .....|
00000AF0: 20 54 4F 0D C5 CE C4 20  41 44 44 49 4E 47 20 41  | TO.... ADDING A|
00000B00: 4C 4C 20 4F 46 20 54 48  45 20 42 59 54 45 53 20  |LL OF THE BYTES |
00000B10: 54 4F 47 45 54 48 45 52  0D 41 4E 44 20 53 54 4F  |TOGETHER.AND STO|
00000B20: 52 49 4E 47 20 54 48 45  4D 20 49 4E 20 C3 C8 C5  |RING THEM IN ...|
00000B30: D8 2F C3 C8 C5 D8 2B 31  2E 0D 0D 20 20 20 20 C2  |./....+1...    .|
00000B40: 45 43 41 55 53 45 20 57  45 20 41 52 45 20 55 53  |ECAUSE WE ARE US|
00000B50: 49 4E 47 20 54 48 45 20  49 4E 44 49 52 45 43 54  |ING THE INDIRECT|
00000B60: 0D D9 20 41 44 44 52 45  53 53 49 4E 47 20 4D 4F  |.. ADDRESSING MO|
00000B70: 44 45 2C 20 57 45 20 4E  45 45 44 20 54 4F 20 5A  |DE, WE NEED TO Z|
00000B80: 45 52 4F 0D 5B D9 5D 2E  0D 0D 20 20 20 20 20 20  |ERO.[.]...      |
00000B90: 20 20 20 20 20 20 CC C4  D9 20 23 30 30 0D 0D 20  |      ... #00.. |
00000BA0: 20 20 20 CC 45 54 27 53  20 54 55 52 4E 20 4F 46  |   .ET'S TURN OF|
00000BB0: 46 20 54 48 45 20 D2 CF  CD 20 49 4E 20 43 41 53  |F THE ... IN CAS|
00000BC0: 45 0D 54 48 45 20 44 41  54 41 20 57 45 20 41 52  |E.THE DATA WE AR|
00000BD0: 45 20 43 48 45 43 4B 49  4E 47 20 49 53 20 55 4E  |E CHECKING IS UN|
00000BE0: 44 45 52 20 49 54 2E 0D  0D 20 20 5D CC CF CF D0  |DER IT...  ]....|
00000BF0: 20 20 20 20 20 D3 C5 C9  0D 20 20 20 20 20 20 20  |     ....       |
00000C00: 20 20 20 20 20 CC C4 C1  20 D2 C1 CD D3 C9 C7 0D  |     ... .......|
00000C10: 20 20 20 20 20 20 20 20  20 20 20 20 C1 CE C4 20  |            ... |
00000C20: 23 32 35 32 0D 20 20 20  20 20 20 20 20 20 20 20  |#252.           |
00000C30: 20 D3 D4 C1 20 D2 C1 CD  D3 C9 C7 0D 0D 0D 20 20  | ... .........  |
00000C40: 20 20 CE 45 58 54 20 57  45 20 47 45 54 20 41 20  |  .EXT WE GET A |
00000C50: 42 59 54 45 20 46 52 4F  4D 20 4D 45 4D 4F 52 59  |BYTE FROM MEMORY|
00000C60: 0D 41 4E 44 20 41 44 44  20 49 54 20 54 4F 20 C3  |.AND ADD IT TO .|
00000C70: C8 C5 D8 2F C3 C8 C5 D8  2B 31 2E 0D 0D 20 20 20  |.../....+1...   |
00000C80: 20 20 20 20 20 20 20 20  20 C3 CC C3 0D 20 20 20  |         ....   |
00000C90: 20 20 20 20 20 20 20 20  20 CC C4 C1 20 28 D3 D4  |         ... (..|
00000CA0: C1 D2 D4 29 2C D9 0D 20  20 20 20 20 20 20 20 20  |...),..         |
00000CB0: 20 20 20 C1 C4 C3 20 C3  C8 C5 D8 0D 20 20 20 20  |   ... .....    |
00000CC0: 20 20 20 20 20 20 20 20  D3 D4 C1 20 C3 C8 C5 D8  |        ... ....|
00000CD0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 CC C4 C1  |.            ...|
00000CE0: 20 C3 C8 C5 D8 2B 31 0D  20 20 20 20 20 20 20 20  | ....+1.        |
00000CF0: 20 20 20 20 C1 C4 C3 20  23 30 30 0D 20 20 20 20  |    ... #00.    |
00000D00: 20 20 20 20 20 20 20 20  D3 D4 C1 20 C3 C8 C5 D8  |        ... ....|
00000D10: 2B 31 0D 0D 20 20 20 20  D4 48 45 4E 20 54 55 52  |+1..    .HEN TUR|
00000D20: 4E 20 54 48 45 20 D2 CF  CD D3 20 42 41 43 4B 20  |N THE .... BACK |
00000D30: 4F 4E 2E 2E 2E 0D 0D 20  20 20 20 20 20 20 20 20  |ON.....         |
00000D40: 20 20 20 CC C4 C1 20 D2  C1 CD D3 C9 C7 0D 20 20  |   ... .......  |
00000D50: 20 20 20 20 20 20 20 20  20 20 CF D2 C1 20 23 30  |          ... #0|
00000D60: 33 0D 20 20 20 20 20 20  20 20 20 20 20 20 D3 D4  |3.            ..|
00000D70: C1 20 D2 C1 CD D3 C9 C7  0D 20 20 20 20 20 20 20  |. .......       |
00000D80: 20 20 20 20 20 C3 CC C9  0D 0D 0D 20 20 20 20 C8  |     ......    .|
00000D90: 41 56 45 20 57 45 20 52  45 41 43 48 45 44 20 54  |AVE WE REACHED T|
00000DA0: 48 45 20 45 4E 44 20 4F  46 20 54 48 45 0D 4C 4F  |HE END OF THE.LO|
00000DB0: 4F 50 3F 20 20 C9 46 20  45 49 54 48 45 52 20 54  |OP?  .F EITHER T|
00000DC0: 48 45 20 4C 4F 57 20 42  59 54 45 20 4F 52 20 54  |HE LOW BYTE OR T|
00000DD0: 48 45 0D 48 49 47 48 20  42 59 54 45 20 4F 46 20  |HE.HIGH BYTE OF |
00000DE0: D3 D4 C1 D2 D4 20 44 4F  45 53 4E 27 54 20 45 51  |..... DOESN'T EQ|
00000DF0: 55 41 4C 20 54 48 45 0D  4C 4F 57 20 4F 52 20 48  |UAL THE.LOW OR H|
00000E00: 49 47 48 20 42 59 54 45  20 4F 46 20 C5 CE C4 20  |IGH BYTE OF ... |
00000E10: 54 48 45 4E 20 42 52 41  4E 43 48 0D 54 4F 20 C1  |THEN BRANCH.TO .|
00000E20: C4 C4 CF CE C5 2E 20 20  C1 C4 C4 CF CE C5 20 41  |......  ...... A|
00000E30: 44 44 53 20 31 20 54 4F  20 54 48 45 0D D3 D4 C1  |DDS 1 TO THE....|
00000E40: D2 D4 20 50 4F 49 4E 54  45 52 2E 0D 0D 20 20 20  |.. POINTER...   |
00000E50: 20 20 20 20 20 20 20 20  20 CC C4 C1 20 D3 D4 C1  |         ... ...|
00000E60: D2 D4 0D 20 20 20 20 20  20 20 20 20 20 20 20 C3  |...            .|
00000E70: CD D0 20 C5 CE C4 0D 20  20 20 20 20 20 20 20 20  |.. ....         |
00000E80: 20 20 20 C2 CE C5 20 C1  C4 C4 CF CE C5 0D 20 20  |   ... .......  |
00000E90: 20 20 20 20 20 20 20 20  20 20 CC C4 C1 20 D3 D4  |          ... ..|
00000EA0: C1 D2 D4 2B 31 0D 20 20  20 20 20 20 20 20 20 20  |...+1.          |
00000EB0: 20 20 C3 CD D0 20 C5 CE  C4 2B 31 0D 20 20 20 20  |  ... ...+1.    |
00000EC0: 20 20 20 20 20 20 20 20  C2 CE C5 20 C1 C4 C4 CF  |        ... ....|
00000ED0: CE C5 0D 0D 0D 0D 0D 0D  0D 20 20 20 20 C9 46 20  |.........    .F |
00000EE0: 57 45 20 46 45 4C 4C 20  54 48 52 4F 55 47 48 20  |WE FELL THROUGH |
00000EF0: 54 48 45 20 4C 41 53 54  20 54 57 4F 0D 43 4F 4D  |THE LAST TWO.COM|
00000F00: 50 41 52 49 53 4F 4E 53  2C 20 57 45 27 56 45 20  |PARISONS, WE'VE |
00000F10: 52 45 41 43 48 45 44 20  54 48 45 20 45 4E 44 0D  |REACHED THE END.|
00000F20: 4F 46 20 54 48 45 20 52  41 4E 47 45 20 57 45 20  |OF THE RANGE WE |
00000F30: 57 41 4E 54 45 44 20 54  4F 20 43 48 45 43 4B 2E  |WANTED TO CHECK.|
00000F40: 20 20 CE 4F 57 0D 57 45  20 4E 45 45 44 20 54 4F  |  .OW.WE NEED TO|
00000F50: 20 43 4F 4D 50 41 52 45  20 C3 C8 C5 C3 CB 20 57  | COMPARE ..... W|
00000F60: 49 54 48 20 C3 C8 C5 D8  20 54 4F 0D 53 45 45 20  |ITH .... TO.SEE |
00000F70: 49 46 20 54 48 45 20 43  48 45 58 53 55 4D 53 20  |IF THE CHEXSUMS |
00000F80: 41 47 52 45 45 2E 20 20  C9 46 20 45 49 54 48 45  |AGREE.  .F EITHE|
00000F90: 52 0D 54 48 45 20 4C 4F  57 20 4F 52 20 48 49 47  |R.THE LOW OR HIG|
00000FA0: 48 20 42 59 54 45 20 44  4F 45 53 4E 27 54 20 41  |H BYTE DOESN'T A|
00000FB0: 47 52 45 45 0D 54 48 45  4E 20 57 45 20 42 52 41  |GREE.THEN WE BRA|
00000FC0: 4E 43 48 20 54 4F 20 CE  CF 2E 0D 0D 20 20 20 20  |NCH TO .....    |
00000FD0: 20 20 20 20 20 20 20 20  CC C4 C1 20 C3 C8 C5 C3  |        ... ....|
00000FE0: CB 0D 20 20 20 20 20 20  20 20 20 20 20 20 C3 CD  |..            ..|
00000FF0: D0 20 C3 C8 C5 D8 0D 20  20 20 20 20 20 20 20 20  |. .....         |
00001000: 20 20 20 C2 CE C5 20 CE  CF 0D 20 20 20 20 20 20  |   ... ...      |
00001010: 20 20 20 20 20 20 CC C4  C1 20 C3 C8 C5 C3 CB 2B  |      ... .....+|
00001020: 31 0D 20 20 20 20 20 20  20 20 20 20 20 20 C3 CD  |1.            ..|
00001030: D0 20 C3 C8 C5 D8 2B 31  0D 20 20 20 20 20 20 20  |. ....+1.       |
00001040: 20 20 20 20 20 C2 CE C5  20 CE CF 0D 0D 0D 0D 0D  |     ... .......|
00001050: 0D 20 20 20 20 C9 46 20  57 45 20 44 49 44 4E 27  |.    .F WE DIDN'|
00001060: 54 20 42 52 41 4E 43 48  20 54 4F 20 CE CF 20 54  |T BRANCH TO .. T|
00001070: 48 45 4E 0D 54 48 45 20  43 48 45 58 53 55 4D 53  |HEN.THE CHEXSUMS|
00001080: 20 57 45 52 45 20 45 51  55 41 4C 20 53 4F 20 57  | WERE EQUAL SO W|
00001090: 45 20 53 54 4F 52 45 0D  41 20 31 20 49 4E 20 54  |E STORE.A 1 IN T|
000010A0: 48 45 20 53 54 41 54 55  53 20 42 59 54 45 20 41  |HE STATUS BYTE A|
000010B0: 4E 44 20 4A 55 4D 50 20  54 4F 0D C5 CF D0 20 28  |ND JUMP TO.... (|
000010C0: 45 4E 44 20 4F 46 20 50  52 4F 47 52 41 4D 29 2E  |END OF PROGRAM).|
000010D0: 0D 0D 20 20 20 20 20 20  20 20 20 20 20 20 CC C4  |..            ..|
000010E0: C1 20 23 30 31 0D 20 20  20 20 20 20 20 20 20 20  |. #01.          |
000010F0: 20 20 D3 D4 C1 20 D3 D4  C1 D4 D5 D3 0D 20 20 20  |  ... .......   |
00001100: 20 20 20 20 20 20 20 20  20 CA CD D0 20 C5 CF D0  |         ... ...|
00001110: 0D 0D 20 20 20 20 C9 46  20 54 48 45 20 43 48 45  |..    .F THE CHE|
00001120: 58 53 55 4D 53 20 57 45  52 45 20 4E 4F 54 20 45  |XSUMS WERE NOT E|
00001130: 51 55 41 4C 20 57 45 0D  53 54 4F 52 45 20 41 20  |QUAL WE.STORE A |
00001140: 30 20 49 4E 20 54 48 45  20 53 54 41 54 55 53 20  |0 IN THE STATUS |
00001150: 42 59 54 45 2E 0D 0D 20  20 CE CF 20 20 20 20 20  |BYTE...  ..     |
00001160: 20 20 20 CC C4 C1 20 23  30 30 0D 20 20 20 20 20  |   ... #00.     |
00001170: 20 20 20 20 20 20 20 D3  D4 C1 20 D3 D4 C1 D4 D5  |       ... .....|
00001180: D3 0D 0D 20 20 20 20 C1  4E 44 20 42 41 43 4B 20  |...    .ND BACK |
00001190: 54 4F 20 C2 C1 D3 C9 C3  2E 0D 0D 20 20 C5 CF D0  |TO ........  ...|
000011A0: 20 20 20 20 20 20 20 D2  D4 D3 0D 0D 20 20 20 20  |       .....    |
000011B0: D4 48 45 20 46 4F 4C 4C  4F 57 49 4E 47 20 54 57  |.HE FOLLOWING TW|
000011C0: 4F 20 53 55 42 52 4F 55  54 49 4E 45 53 0D 57 45  |O SUBROUTINES.WE|
000011D0: 52 45 20 43 41 4C 4C 45  44 20 45 41 52 4C 49 45  |RE CALLED EARLIE|
000011E0: 52 20 49 4E 20 54 48 45  20 43 4F 44 45 2E 0D 0D  |R IN THE CODE...|
000011F0: 20 20 20 20 C1 C4 C4 CF  CE C5 20 41 44 44 53 20  |    ...... ADDS |
00001200: 4F 4E 45 20 54 4F 20 54  48 45 20 D3 D4 C1 D2 D4  |ONE TO THE .....|
00001210: 0D 50 4F 49 4E 54 45 52  20 41 4E 44 20 4A 55 4D  |.POINTER AND JUM|
00001220: 50 53 20 42 41 43 4B 20  55 50 20 54 4F 20 5D CC  |PS BACK UP TO ].|
00001230: CF CF D0 2E 0D D4 48 49  53 20 44 45 4D 4F 4E 53  |......HIS DEMONS|
00001240: 54 52 41 54 45 53 20 4F  4E 45 20 4D 45 54 48 4F  |TRATES ONE METHO|
00001250: 44 20 4F 46 0D 41 44 44  49 4E 47 20 31 20 54 4F  |D OF.ADDING 1 TO|
00001260: 20 41 20 54 57 4F 2D 42  59 54 45 20 4E 55 4D 42  | A TWO-BYTE NUMB|
00001270: 45 52 2E 0D 0D 20 20 C1  C4 C4 CF CE C5 20 20 20  |ER...  ......   |
00001280: 20 C3 CC C3 0D 20 20 20  20 20 20 20 20 20 20 20  | ....           |
00001290: 20 CC C4 C1 20 D3 D4 C1  D2 D4 0D 20 20 20 20 20  | ... ......     |
000012A0: 20 20 20 20 20 20 20 C1  C4 C3 20 23 30 31 0D 20  |       ... #01. |
000012B0: 20 20 20 20 20 20 20 20  20 20 20 D3 D4 C1 20 D3  |           ... .|
000012C0: D4 C1 D2 D4 0D 20 20 20  20 20 20 20 20 20 20 20  |.....           |
000012D0: 20 CC C4 C1 20 D3 D4 C1  D2 D4 2B 31 0D 20 20 20  | ... .....+1.   |
000012E0: 20 20 20 20 20 20 20 20  20 C1 C4 C3 20 23 30 30  |         ... #00|
000012F0: 0D 20 20 20 20 20 20 20  20 20 20 20 20 D3 D4 C1  |.            ...|
00001300: 20 D3 D4 C1 D2 D4 2B 31  0D 20 20 20 20 20 20 20  | .....+1.       |
00001310: 20 20 20 20 20 CA CD D0  20 5D CC CF CF D0 0D 0D  |     ... ]......|
00001320: 0D 0D 20 20 20 20 C7 C5  D4 CE D5 CD 20 50 41 52  |..    ...... PAR|
00001330: 53 45 53 20 C2 C1 D3 C9  C3 27 53 20 54 45 58 54  |SES .....'S TEXT|
00001340: 20 4C 49 4E 45 0D 42 59  20 53 54 52 49 50 50 49  | LINE.BY STRIPPI|
00001350: 4E 47 20 4F 46 46 20 54  48 45 20 43 4F 4D 4D 41  |NG OFF THE COMMA|
00001360: 20 41 4E 44 0D 45 56 41  4C 55 41 54 49 4E 47 20  | AND.EVALUATING |
00001370: 54 48 45 20 4E 55 4D 42  45 52 20 54 48 41 54 20  |THE NUMBER THAT |
00001380: 46 4F 4C 4C 4F 57 53 2E  0D C9 54 20 53 54 4F 52  |FOLLOWS...T STOR|
00001390: 45 53 20 54 48 45 20 4C  4F 57 20 42 59 54 45 20  |ES THE LOW BYTE |
000013A0: 49 4E 20 5B D8 5D 20 41  4E 44 20 54 48 45 0D 48  |IN [.] AND THE.H|
000013B0: 49 47 48 20 42 59 54 45  20 49 4E 20 5B C1 5D 2E  |IGH BYTE IN [.].|
000013C0: 0D 0D 20 20 C7 C5 D4 CE  D5 CD 20 20 20 CA D3 D2  |..  ......   ...|
000013D0: 20 C3 C8 CB C3 CF CD 0D  20 20 20 20 20 20 20 20  | .......        |
000013E0: 20 20 20 CA D3 D2 20 C6  D2 CD C5 D6 C1 CC 0D 20  |   ... ........ |
000013F0: 20 20 20 20 20 20 20 20  20 20 CA D3 D2 20 C6 C1  |          ... ..|
00001400: C3 D4 CF C9 CE D4 0D 20  20 20 20 20 20 20 20 20  |.......         |
00001410: 20 20 CC C4 D9 20 23 30  30 0D 20 20 20 20 20 20  |  ... #00.      |
00001420: 20 20 20 20 20 CC C4 C1  20 C6 C1 C3 2B 34 0D 20  |     ... ...+4. |
00001430: 20 20 20 20 20 20 20 20  20 20 D4 C1 D8 0D 20 20  |          ....  |
00001440: 20 20 20 20 20 20 20 20  20 CC C4 C1 20 C6 C1 C3  |         ... ...|
00001450: 2B 33 0D 20 20 20 20 20  20 20 20 20 20 20 D2 D4  |+3.           ..|
00001460: D3 0D 0D 20 20 20 20 D4  48 49 53 20 49 53 20 41  |...    .HIS IS A|
00001470: 4E 20 45 58 54 52 45 4D  45 4C 59 20 48 41 4E 44  |N EXTREMELY HAND|
00001480: 59 0D 52 4F 55 54 49 4E  45 20 54 48 41 54 20 41  |Y.ROUTINE THAT A|
00001490: 4C 4C 4F 57 53 20 53 59  4E 54 41 58 45 53 20 4C  |LLOWS SYNTAXES L|
000014A0: 49 4B 45 0D D3 D9 D3 34  39 31 35 32 2C 34 30 39  |IKE....49152,409|
000014B0: 36 2C 32 35 36 20 41 4E  44 20 53 55 43 48 2E 0D  |6,256 AND SUCH..|
000014C0: 0D 20 20 20 20 D4 48 45  53 45 20 42 59 54 45 53  |.    .HESE BYTES|
000014D0: 20 41 52 45 20 47 45 4E  45 52 41 4C 20 42 59 54  | ARE GENERAL BYT|
000014E0: 45 53 0D 55 53 45 44 20  54 48 52 4F 55 47 48 4F  |ES.USED THROUGHO|
000014F0: 55 54 20 54 48 45 20 43  4F 44 45 2E 0D 0D 20 20  |UT THE CODE...  |
00001500: C3 C8 C5 C3 CB 20 20 20  20 C4 C6 C2 20 30 30 2C  |.....    ... 00,|
00001510: 30 30 0D 20 20 C3 C8 C5  D8 20 20 20 20 20 C4 C6  |00.  ....     ..|
00001520: C2 20 30 30 2C 30 30 0D  20 20 C5 CE C4 20 20 20  |. 00,00.  ...   |
00001530: 20 20 20 C4 C6 C2 20 30  30 2C 30 30 0D 0D 20 20  |   ... 00,00..  |
00001540: 20 20 D2 41 54 48 45 52  20 54 48 41 4E 20 50 4F  |  .ATHER THAN PO|
00001550: 4B 49 4E 47 20 50 41 52  41 4D 45 54 45 52 53 0D  |KING PARAMETERS.|
00001560: 49 4E 54 4F 20 50 4C 41  43 45 20 42 45 46 4F 52  |INTO PLACE BEFOR|
00001570: 45 20 43 41 4C 4C 49 4E  47 20 41 4E 20 CD CC 0D  |E CALLING AN ...|
00001580: 52 4F 55 54 49 4E 45 20  57 49 54 48 20 54 48 45  |ROUTINE WITH THE|
00001590: 20 D3 D9 D3 20 43 4F 4D  4D 41 4E 44 2C 20 49 54  | ... COMMAND, IT|
000015A0: 20 49 53 0D 4F 46 54 45  4E 20 45 41 53 49 45 52  | IS.OFTEN EASIER|
000015B0: 20 54 4F 20 55 53 45 20  54 48 45 20 C7 C5 D4 CE  | TO USE THE ....|
000015C0: D5 CD 0D 52 4F 55 54 49  4E 45 20 41 4E 44 20 41  |...ROUTINE AND A|
000015D0: 44 44 20 54 48 45 20 50  41 52 41 4D 45 54 45 52  |DD THE PARAMETER|
000015E0: 53 20 54 4F 20 54 48 45  0D 45 4E 44 20 4F 46 20  |S TO THE.END OF |
000015F0: 54 48 45 20 D3 D9 D3 20  43 4F 4D 4D 41 4E 44 20  |THE ... COMMAND |
00001600: 53 45 50 41 52 41 54 45  44 20 42 59 0D 43 4F 4D  |SEPARATED BY.COM|
00001610: 4D 41 53 2E 20 20 C9 54  20 49 53 20 50 52 4F 42  |MAS.  .T IS PROB|
00001620: 41 42 4C 59 20 54 48 45  20 4D 4F 53 54 0D 45 4C  |ABLY THE MOST.EL|
00001630: 45 47 41 4E 54 20 57 41  59 20 54 4F 20 50 41 53  |EGANT WAY TO PAS|
00001640: 53 20 50 41 52 41 4D 45  54 45 52 53 20 46 52 4F  |S PARAMETERS FRO|
00001650: 4D 0D C2 C1 D3 C9 C3 20  54 4F 20 CD CC 2E 0D 0D  |M...... TO .....|
00001660: 0D 0D 20 20 20 20 D4 4F  20 55 53 45 20 C3 C8 C5  |..    .O USE ...|
00001670: D8 D3 D5 CD 20 46 52 4F  4D 20 C2 C1 D3 C9 C3 2C  |.... FROM .....,|
00001680: 20 54 48 49 53 0D 49 53  20 54 48 45 20 53 59 4E  | THIS.IS THE SYN|
00001690: 54 41 58 20 54 4F 20 55  53 45 2E 0D 0D 20 20 20  |TAX TO USE...   |
000016A0: 20 20 20 20 20 D3 D9 D3  20 CF D2 C7 2C C6 D2 CF  |     ... ...,...|
000016B0: CD 2C D4 CF 2C C3 C8 C5  C3 CB 0D 0D 20 20 20 20  |.,..,.......    |
000016C0: CF D2 C7 20 49 53 20 54  48 45 20 41 44 44 52 45  |... IS THE ADDRE|
000016D0: 53 53 20 41 54 20 57 48  49 43 48 20 59 4F 55 0D  |SS AT WHICH YOU.|
000016E0: 41 53 53 45 4D 42 4C 45  44 20 49 54 2E 20 22 C3  |ASSEMBLED IT. ".|
000016F0: C8 C5 D8 D3 D5 CD 2E CF  22 20 4F 4E 20 54 48 49  |........" ON THI|
00001700: 53 0D 44 49 53 4B 20 49  53 20 41 53 53 45 4D 42  |S.DISK IS ASSEMB|
00001710: 4C 45 44 20 41 54 20 33  32 37 36 38 2E 0D 20 20  |LED AT 32768..  |
00001720: 20 20 C6 D2 CF CD 20 49  53 20 54 48 45 20 53 54  |  .... IS THE ST|
00001730: 41 52 54 49 4E 47 20 41  44 44 52 45 53 53 20 4F  |ARTING ADDRESS O|
00001740: 46 0D 54 48 45 20 44 41  54 41 20 59 4F 55 20 57  |F.THE DATA YOU W|
00001750: 41 4E 54 20 54 4F 20 43  48 45 43 4B 2E 0D 20 20  |ANT TO CHECK..  |
00001760: 20 20 D4 CF 20 49 53 20  54 48 45 20 45 4E 44 49  |  .. IS THE ENDI|
00001770: 4E 47 20 41 44 44 52 45  53 53 2E 0D 0D 20 20 20  |NG ADDRESS...   |
00001780: 20 C1 46 54 45 52 20 49  4E 56 4F 4B 49 4E 47 20  | .FTER INVOKING |
00001790: C3 C8 C5 D8 D3 D5 CD 2C  20 4D 45 4D 4F 52 59 0D  |......., MEMORY.|
000017A0: 4C 4F 43 41 54 49 4F 4E  20 32 20 57 49 4C 4C 20  |LOCATION 2 WILL |
000017B0: 43 4F 4E 54 41 49 4E 20  41 20 30 20 4F 52 20 41  |CONTAIN A 0 OR A|
000017C0: 20 31 2E 0D 0D 20 20 20  20 30 20 2D 20 C3 48 45  | 1...    0 - .HE|
000017D0: 58 53 55 4D 53 20 44 4F  4E 27 54 20 4D 41 54 43  |XSUMS DON'T MATC|
000017E0: 48 20 28 52 45 CC CF C1  C4 0D 54 48 45 20 46 49  |H (RE.....THE FI|
000017F0: 4C 45 20 4F 52 20 44 41  54 41 2E 29 0D 20 20 20  |LE OR DATA.).   |
00001800: 20 31 20 2D 20 C3 48 45  58 53 55 4D 53 20 44 4F  | 1 - .HEXSUMS DO|
00001810: 20 4D 41 54 43 48 20 28  D4 48 45 20 44 41 54 41  | MATCH (.HE DATA|
00001820: 0D 49 53 20 49 4E 54 41  43 54 2E 20 20 CE 4F 20  |.IS INTACT.  .O |
00001830: 4E 45 45 44 20 54 4F 20  52 45 CC CF C1 C4 2E 29  |NEED TO RE.....)|
00001840: 0D 20 20 20 20 C9 4E 20  4F 52 44 45 52 20 54 4F  |.    .N ORDER TO|
00001850: 20 55 53 45 20 54 48 49  53 20 52 4F 55 54 49 4E  | USE THIS ROUTIN|
00001860: 45 2C 0D 59 4F 55 27 4C  4C 20 4E 45 45 44 20 54  |E,.YOU'LL NEED T|
00001870: 4F 20 4B 4E 4F 57 20 54  48 45 20 43 48 45 58 53  |O KNOW THE CHEXS|
00001880: 55 4D 20 54 4F 0D 55 53  45 20 57 48 45 4E 20 43  |UM TO.USE WHEN C|
00001890: 41 4C 4C 49 4E 47 20 49  54 2E 20 28 49 2E 45 2E  |ALLING IT. (I.E.|
000018A0: 20 C3 C8 C5 C3 CB 29 0D  D5 4E 46 4F 52 54 55 4E  | .....)..NFORTUN|
000018B0: 41 54 45 4C 59 2C 20 54  48 45 52 45 20 49 53 20  |ATELY, THERE IS |
000018C0: 4E 4F 20 22 49 4E 53 54  41 4E 54 22 0D 57 41 59  |NO "INSTANT".WAY|
000018D0: 20 54 4F 20 46 49 4E 44  20 54 48 49 53 20 4E 55  | TO FIND THIS NU|
000018E0: 4D 42 45 52 2E 20 20 D4  4F 20 46 49 4E 44 20 54  |MBER.  .O FIND T|
000018F0: 48 45 0D 41 43 54 55 41  4C 20 4E 55 4D 42 45 52  |HE.ACTUAL NUMBER|
00001900: 20 54 4F 20 55 53 45 2C  20 43 41 4C 4C 20 54 48  | TO USE, CALL TH|
00001910: 45 0D 43 48 45 58 53 55  4D 20 52 4F 55 54 49 4E  |E.CHEXSUM ROUTIN|
00001920: 45 20 55 53 49 4E 47 20  41 4E 59 20 4E 55 4D 42  |E USING ANY NUMB|
00001930: 45 52 20 46 4F 52 0D C3  C8 C5 C3 CB 20 41 4E 44  |ER FOR...... AND|
00001940: 20 45 4E 54 45 52 20 54  48 45 20 46 4F 4C 4C 4F  | ENTER THE FOLLO|
00001950: 57 49 4E 47 3A 0D 0D D0  D2 C9 CE D4 20 D0 C5 C5  |WING:....... ...|
00001960: CB 28 CF D2 C7 2B 31 35  32 29 2B D0 C5 C5 CB 28  |.(...+152)+....(|
00001970: CF D2 C7 2B 31 35 33 29  2A 32 35 36 0D 0D 20 20  |...+153)*256..  |
00001980: 20 20 D4 48 49 53 20 57  49 4C 4C 20 44 49 53 50  |  .HIS WILL DISP|
00001990: 4C 41 59 20 54 48 45 20  41 43 54 55 41 4C 0D 43  |LAY THE ACTUAL.C|
000019A0: 48 45 58 53 55 4D 2E 20  D4 48 49 53 20 49 53 20  |HEXSUM. .HIS IS |
000019B0: 57 48 41 54 20 59 4F 55  20 55 53 45 20 49 4E 20  |WHAT YOU USE IN |
000019C0: 50 4C 41 43 45 0D 4F 46  20 22 C3 C8 C5 C3 CB 22  |PLACE.OF "....."|
000019D0: 20 57 48 45 4E 20 59 4F  55 20 43 41 4C 4C 20 54  | WHEN YOU CALL T|
000019E0: 48 45 20 52 4F 55 54 49  4E 45 0D 49 4E 20 59 4F  |HE ROUTINE.IN YO|
000019F0: 55 52 20 4F 57 4E 20 50  52 4F 47 52 41 4D 2E 20  |UR OWN PROGRAM. |
00001A00: CF 46 20 43 4F 55 52 53  45 2C 0D 42 45 46 4F 52  |.F COURSE,.BEFOR|
00001A10: 45 20 43 41 4C 4C 49 4E  47 20 49 54 2C 20 4D 41  |E CALLING IT, MA|
00001A20: 4B 45 20 53 55 52 45 20  54 48 45 20 44 41 54 41  |KE SURE THE DATA|
00001A30: 0D 59 4F 55 20 57 41 4E  54 20 54 4F 20 43 48 45  |.YOU WANT TO CHE|
00001A40: 43 4B 20 49 53 20 49 4E  20 4D 45 4D 4F 52 59 20  |CK IS IN MEMORY |
00001A50: 4F 52 0D 59 4F 55 27 4C  4C 20 42 45 20 43 48 45  |OR.YOU'LL BE CHE|
00001A60: 43 4B 49 4E 47 20 47 41  52 42 41 47 45 2E 0D 0D  |CKING GARBAGE...|
00001A70: 20 20 20 20 D4 48 45 20  31 35 32 20 41 4E 44 20  |    .HE 152 AND |
00001A80: 31 35 33 20 41 42 4F 56  45 20 41 52 45 20 4D 45  |153 ABOVE ARE ME|
00001A90: 52 45 4C 59 0D 54 48 45  20 4F 46 46 53 45 54 20  |RELY.THE OFFSET |
00001AA0: 46 52 4F 4D 20 54 48 45  20 CF D2 C7 20 54 48 41  |FROM THE ... THA|
00001AB0: 54 20 54 48 45 0D 41 53  53 45 4D 42 4C 45 52 20  |T THE.ASSEMBLER |
00001AC0: 50 4C 41 43 45 53 20 54  48 45 20 42 59 54 45 53  |PLACES THE BYTES|
00001AD0: 20 46 4F 55 4E 44 20 49  4E 0D 54 48 45 20 C4 C6  | FOUND IN.THE ..|
00001AE0: C2 20 53 54 41 54 45 4D  45 4E 54 53 2E 20 D5 4E  |. STATEMENTS. .N|
00001AF0: 4C 45 53 53 20 54 48 45  20 43 4F 44 45 0D 49 53  |LESS THE CODE.IS|
00001B00: 20 43 48 41 4E 47 45 44  2C 20 54 48 49 53 20 4E  | CHANGED, THIS N|
00001B10: 55 4D 42 45 52 20 57 49  4C 4C 20 52 45 4D 41 49  |UMBER WILL REMAI|
00001B20: 4E 0D 54 48 45 20 53 41  4D 45 2E 0D 0D 20 20 20  |N.THE SAME...   |
00001B30: 20 D3 49 4E 43 45 20 57  45 20 48 41 56 45 20 53  | .INCE WE HAVE S|
00001B40: 45 56 45 52 41 4C 20 46  49 4C 45 53 20 54 4F 0D  |EVERAL FILES TO.|
00001B50: 43 48 45 43 4B 2C 20 57  45 20 4B 45 45 50 20 54  |CHECK, WE KEEP T|
00001B60: 48 45 20 43 48 45 58 53  55 4D 53 20 49 4E 20 41  |HE CHEXSUMS IN A|
00001B70: 20 D3 C5 D1 0D 46 49 4C  45 20 43 41 4C 4C 45 44  | ....FILE CALLED|
00001B80: 20 C3 C8 C5 D8 D3 D5 CD  D3 2E 0D 0D 20 20 20 20  | ...........    |
00001B90: D3 4F 20 49 46 20 59 4F  55 20 57 41 4E 54 20 54  |.O IF YOU WANT T|
00001BA0: 4F 20 43 48 45 43 4B 20  54 4F 20 53 45 45 20 49  |O CHECK TO SEE I|
00001BB0: 46 0D 41 20 46 49 4C 45  20 49 53 20 49 4E 20 4D  |F.A FILE IS IN M|
00001BC0: 45 4D 4F 52 59 2C 20 C3  C8 C5 D8 D3 D5 CD 20 57  |EMORY, ....... W|
00001BD0: 49 4C 4C 20 44 4F 0D 49  54 20 41 54 20 CD CC 20  |ILL DO.IT AT .. |
00001BE0: 53 50 45 45 44 2E 20 20  CE 4F 54 48 49 4E 47 20  |SPEED.  .OTHING |
00001BF0: 46 41 4E 43 59 2C 20 42  55 54 0D 46 41 53 54 2E  |FANCY, BUT.FAST.|
00001C00: 20 20 C6 4F 52 20 4F 55  52 20 50 55 52 50 4F 53  |  .OR OUR PURPOS|
00001C10: 45 53 2C 20 57 45 20 4D  41 49 4E 4C 59 0D 57 41  |ES, WE MAINLY.WA|
00001C20: 4E 54 45 44 20 54 4F 20  4D 41 4B 45 20 53 55 52  |NTED TO MAKE SUR|
00001C30: 45 20 57 45 20 44 49 44  4E 27 54 20 52 45 CC CF  |E WE DIDN'T RE..|
00001C40: C1 C4 0D 41 4E 59 20 46  49 4C 45 20 55 4E 4E 45  |...ANY FILE UNNE|
00001C50: 43 45 53 53 41 52 49 4C  59 2E 0D 0D 20 20 20 20  |CESSARILY...    |
00001C60: 20 20 20 20 2A 2A 2A 2A  20 C5 4E 44 20 CF 46 20  |    **** .ND .F |
00001C70: D4 45 58 54 20 2A 2A 2A  2A 0D                    |.EXT ****.      |
..^U:ZERO..       BITS: THE CHEXSUM ROUT
INE..           BY MIKE MAYNARD..    DUR
ING THE EVOLUTION OF OUR.LATEST OPERATIN
G SYSTEM, MANY MACHINE.LANGUAGE ROUTINES
 WERE DEVELOPED TO.HELP MAKE EVERY ASPEC
T AS FAST AS.POSSIBLE...    THE FIRST GR
OUP OF ROUTINES CAN.BE FOUND IN THE FILE
 "FILE HANDLER.O"..THIS FILE CONTAINS TH
REE ROUTINES:.CHEXSUM, COPYMEM AND BLOAD
.  THIS.MONTH WE'LL COVER THE CHEXSUM.RO
UTINE....    THIS ROUTINE RUNS THROUGH A
N AREA.OF MEMORY AND ADDS ALL OF THE BYT
ES.TOGETHER LEAVING THE GRAND TOTAL IN A
.TWO-BYTE ADDRESS. IF THE TOTAL OF THE.A
REA YOU CHECK EXCEEDS 65535, THE.HIGHEST
 NUMBER THAT CAN BE STORED IN.TWO BYTES,
 THE TOTAL WILL ROLL OVER.TO ZERO AND CO
NTINUE FROM THERE...    THE CHEXSUM ROUT
INE IS USED WHEN.YOU RECONNECT TO LOADST
AR.  WHILE THE."PLEASE WAIT" MESSAGE IS 
BEING.DISPLAYED, THE CHEXSUM ROUTINE IS.
BUSY CHECKING DIFFERENT AREAS OF YOUR.64
'S MEMORY TO SEE IF THAT AREA HAS.BEEN C
ORRUPTED BY THE "RUN IT".PROGRAM....    
WHEN CHEXSUM FINDS THAT AN AREA.OF MEMOR
Y HAS NOT BEEN CORRUPTED, IT.DOESN'T HAV
E TO LOAD THAT ROUTINE AND.THAT MEANS IT
 WILL TAKE LESS TIME TO.RECONNECT TO THE
 MAIN MENU...    THIS ROUTINE WAS WRITTE
N WITH THE.MERLIN ASSEMBLER AND, THEREFO
RE, IS.SHOWN IN MERLIN FORMAT.  WITH A F
EW.MINOR MODIFICATIONS YOU SHOULD BE.ABL
E TO ENTER THE CODE INTO YOUR OWN.ASSEMB
LER...    IN THE EXPLANATIONS, THESE.ABB
REVIATIONS ARE USED... [A] = ACCUMULATOR
  [X] = X REGISTER. [Y] = Y REGISTER   "
;" = REMARK.   ALL NUMBERS SHOWN ARE IN 
DECIMAL!..    THE FOLLOWING GROUP OF EQU
'S ARE.THE EQUATES FOR THE CODE. THEY TE
LL.THE ADDRESSES USED FOR EACH SYMBOLIC.
WORD (LABEL)...              ORG 32768..
  CHKCOM      EQU   44797.  FRMEVAL     
EQU   44446.  FACTOINT    EQU   48283.  
START       EQU   251.  FAC         EQU 
  97.  RAMSIG      EQU   1.  STATUS     
 EQU   2.....    FIRST, WE PARSE THE STA
RTING.ADDRESS, ENDING ADDRESS AND THE.CH
EXSUM NUMBER FROM THE SYS STATEMENT.WHIC
H WE'LL USE IN BASIC TO CALL THE.CHEXSUM
 ROUTINE.  THIS IS DONE BY.CALLING GETNU
M WHICH WILL BE.DISCUSSED LATER IN THE C
ODE...            JSR GETNUM  ;PUT START
ING.            STX START   ;ADDRESS IN.
            STA START+1 ;START/START+1..
            JSR GETNUM  ; PUT ENDING.   
         STX END     ; ADDRESS IN.      
      STA END+1   ; END / END+1..       
     JSR GETNUM  ; PUT CHEXSUM.         
   STX CHECK   ; IN CHECK.            ST
A CHECK+1 ; AND CHECK+1..    BEFORE WE G
ET STARTED IN THE LOOP,.WE NEED TO INITI
ALIZE THE CHEXSUM.NUMBER...NOTE: CHECK I
S THE PREDETERMINED.      CHEXSUM NUMBER
.  IF THE.      CALCULATED CHEXSUM NUMBE
R.      DOESN'T EQUAL CHECK, THEN THAT. 
     FILE MUST BE LOADED AGAIN...      C
HEX IS THE NUMBER ABOUT TO BE.      CALC
ULATED BY THE ROUTINE...            LDA 
#00.            STA CHEX.            STA
 CHEX+1...    NOW WE CAN LOOP FROM START
 TO.END ADDING ALL OF THE BYTES TOGETHER
.AND STORING THEM IN CHEX/CHEX+1...    B
ECAUSE WE ARE USING THE INDIRECT.Y ADDRE
SSING MODE, WE NEED TO ZERO.[Y]...      
      LDY #00..    LET'S TURN OFF THE RO
M IN CASE.THE DATA WE ARE CHECKING IS UN
DER IT...  ]LOOP     SEI.            LDA
 RAMSIG.            AND #252.           
 STA RAMSIG...    NEXT WE GET A BYTE FRO
M MEMORY.AND ADD IT TO CHEX/CHEX+1...   
         CLC.            LDA (START),Y. 
           ADC CHEX.            STA CHEX
.            LDA CHEX+1.            ADC 
#00.            STA CHEX+1..    THEN TUR
N THE ROMS BACK ON.....            LDA R
AMSIG.            ORA #03.            ST
A RAMSIG.            CLI...    HAVE WE R
EACHED THE END OF THE.LOOP?  IF EITHER T
HE LOW BYTE OR THE.HIGH BYTE OF START DO
ESN'T EQUAL THE.LOW OR HIGH BYTE OF END 
THEN BRANCH.TO ADDONE.  ADDONE ADDS 1 TO
 THE.START POINTER...            LDA STA
RT.            CMP END.            BNE A
DDONE.            LDA START+1.          
  CMP END+1.            BNE ADDONE......
.    IF WE FELL THROUGH THE LAST TWO.COM
PARISONS, WE'VE REACHED THE END.OF THE R
ANGE WE WANTED TO CHECK.  NOW.WE NEED TO
 COMPARE CHECK WITH CHEX TO.SEE IF THE C
HEXSUMS AGREE.  IF EITHER.THE LOW OR HIG
H BYTE DOESN'T AGREE.THEN WE BRANCH TO N
O...            LDA CHECK.            CM
P CHEX.            BNE NO.            LD
A CHECK+1.            CMP CHEX+1.       
     BNE NO......    IF WE DIDN'T BRANCH
 TO NO THEN.THE CHEXSUMS WERE EQUAL SO W
E STORE.A 1 IN THE STATUS BYTE AND JUMP 
TO.EOP (END OF PROGRAM)...            LD
A #01.            STA STATUS.           
 JMP EOP..    IF THE CHEXSUMS WERE NOT E
QUAL WE.STORE A 0 IN THE STATUS BYTE... 
 NO        LDA #00.            STA STATU
S..    AND BACK TO BASIC...  EOP       R
TS..    THE FOLLOWING TWO SUBROUTINES.WE
RE CALLED EARLIER IN THE CODE...    ADDO
NE ADDS ONE TO THE START.POINTER AND JUM
PS BACK UP TO ]LOOP..THIS DEMONSTRATES O
NE METHOD OF.ADDING 1 TO A TWO-BYTE NUMB
ER...  ADDONE    CLC.            LDA STA
RT.            ADC #01.            STA S
TART.            LDA START+1.           
 ADC #00.            STA START+1.       
     JMP ]LOOP....    GETNUM PARSES BASI
C'S TEXT LINE.BY STRIPPING OFF THE COMMA
 AND.EVALUATING THE NUMBER THAT FOLLOWS.
.IT STORES THE LOW BYTE IN [X] AND THE.H
IGH BYTE IN [A]...  GETNUM   JSR CHKCOM.
           JSR FRMEVAL.           JSR FA
CTOINT.           LDY #00.           LDA
 FAC+4.           TAX.           LDA FAC
+3.           RTS..    THIS IS AN EXTREM
ELY HANDY.ROUTINE THAT ALLOWS SYNTAXES L
IKE.SYS49152,4096,256 AND SUCH...    THE
SE BYTES ARE GENERAL BYTES.USED THROUGHO
UT THE CODE...  CHECK    DFB 00,00.  CHE
X     DFB 00,00.  END      DFB 00,00..  
  RATHER THAN POKING PARAMETERS.INTO PLA
CE BEFORE CALLING AN ML.ROUTINE WITH THE
 SYS COMMAND, IT IS.OFTEN EASIER TO USE 
THE GETNUM.ROUTINE AND ADD THE PARAMETER
S TO THE.END OF THE SYS COMMAND SEPARATE
D BY.COMMAS.  IT IS PROBABLY THE MOST.EL
EGANT WAY TO PASS PARAMETERS FROM.BASIC 
TO ML.....    TO USE CHEXSUM FROM BASIC,
 THIS.IS THE SYNTAX TO USE...        SYS
 ORG,FROM,TO,CHECK..    ORG IS THE ADDRE
SS AT WHICH YOU.ASSEMBLED IT. "CHEXSUM.O
" ON THIS.DISK IS ASSEMBLED AT 32768..  
  FROM IS THE STARTING ADDRESS OF.THE DA
TA YOU WANT TO CHECK..    TO IS THE ENDI
NG ADDRESS...    AFTER INVOKING CHEXSUM,
 MEMORY.LOCATION 2 WILL CONTAIN A 0 OR A
 1...    0 - CHEXSUMS DON'T MATCH (RELOA
D.THE FILE OR DATA.).    1 - CHEXSUMS DO
 MATCH (THE DATA.IS INTACT.  NO NEED TO 
RELOAD.).    IN ORDER TO USE THIS ROUTIN
E,.YOU'LL NEED TO KNOW THE CHEXSUM TO.US
E WHEN CALLING IT. (I.E. CHECK).UNFORTUN
ATELY, THERE IS NO "INSTANT".WAY TO FIND
 THIS NUMBER.  TO FIND THE.ACTUAL NUMBER
 TO USE, CALL THE.CHEXSUM ROUTINE USING 
ANY NUMBER FOR.CHECK AND ENTER THE FOLLO
WING:..PRINT PEEK(ORG+152)+PEEK(ORG+153)
*256..    THIS WILL DISPLAY THE ACTUAL.C
HEXSUM. THIS IS WHAT YOU USE IN PLACE.OF
 "CHECK" WHEN YOU CALL THE ROUTINE.IN YO
UR OWN PROGRAM. OF COURSE,.BEFORE CALLIN
G IT, MAKE SURE THE DATA.YOU WANT TO CHE
CK IS IN MEMORY OR.YOU'LL BE CHECKING GA
RBAGE...    THE 152 AND 153 ABOVE ARE ME
RELY.THE OFFSET FROM THE ORG THAT THE.AS
SEMBLER PLACES THE BYTES FOUND IN.THE DF
B STATEMENTS. UNLESS THE CODE.IS CHANGED
, THIS NUMBER WILL REMAIN.THE SAME...   
 SINCE WE HAVE SEVERAL FILES TO.CHECK, W
E KEEP THE CHEXSUMS IN A SEQ.FILE CALLED
 CHEXSUMS...    SO IF YOU WANT TO CHECK 
TO SEE IF.A FILE IS IN MEMORY, CHEXSUM W
ILL DO.IT AT ML SPEED.  NOTHING FANCY, B
UT.FAST.  FOR OUR PURPOSES, WE MAINLY.WA
NTED TO MAKE SURE WE DIDN'T RELOAD.ANY F
ILE UNNECESSARILY...        **** END OF 
TEXT ****.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL