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

CR-HILOAD   4302

FILE INFORMATION

FILENAME(S): CR-HILOAD   4302

FILE TYPE(S): SEQ

FILE SIZE: 3.4K

FIRST SEEN: 2025-11-30 21:23:55

APPEARS ON: 1 disk(s)

FILE HASH

e319c918efc72053a7a91d850f3981e62ec2a7aabf8610359ba7dd765fcffd30

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
C64 HULP 40 2 CR-HILOAD   4302 SEQ DuncanTwain 25 8 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 4C 4F 41 44 45 52 20  46 4F 52 20 52 45 53 49  |;LOADER FOR RESI|
00000010: 44 45 4E 54 20 50 45 54  20 36 35 30 32 0D 3B 20  |DENT PET 6502.; |
00000020: 41 53 53 45 4D 42 4C 45  52 0D 2E 53 4B 49 0D 3B  |ASSEMBLER..SKI.;|
00000030: 4A 55 4E 45 20 31 39 2C  31 39 37 39 0D 2E 53 4B  |JUNE 19,1979..SK|
00000040: 49 0D 3B 43 4F 4E 53 54  41 4E 54 53 20 46 52 4F  |I.;CONSTANTS FRO|
00000050: 4D 20 50 45 54 20 42 41  53 49 43 0D 52 45 41 44  |M PET BASIC.READ|
00000060: 59 20 3D 24 43 33 38 39  0D 43 4C 52 43 48 4E 20  |Y =$C389.CLRCHN |
00000070: 3D 24 46 46 43 43 20 3B  43 4C 4F 53 45 20 49 2F  |=$FFCC ;CLOSE I/|
00000080: 4F 20 43 48 41 4E 4E 45  4C 53 0D 43 48 4B 49 4E  |O CHANNELS.CHKIN|
00000090: 20 3D 24 46 37 37 30 20  3B 4F 50 45 4E 20 49 4E  | =$F770 ;OPEN IN|
000000A0: 50 55 54 20 43 48 41 4E  4E 45 4C 0D 42 41 53 49  |PUT CHANNEL.BASI|
000000B0: 4E 20 3D 24 46 31 45 31  20 3B 49 4E 50 55 54 20  |N =$F1E1 ;INPUT |
000000C0: 53 4F 55 52 43 45 20 42  59 54 45 0D 43 4B 4F 55  |SOURCE BYTE.CKOU|
000000D0: 54 20 3D 24 46 37 42 43  20 3B 4F 50 45 4E 20 4F  |T =$F7BC ;OPEN O|
000000E0: 55 54 50 55 54 20 43 48  41 4E 4E 45 4C 0D 42 41  |UTPUT CHANNEL.BA|
000000F0: 53 4F 55 54 20 3D 24 46  32 33 32 20 3B 4F 55 54  |SOUT =$F232 ;OUT|
00000100: 50 55 54 20 43 48 41 52  41 43 54 45 52 20 54 4F  |PUT CHARACTER TO|
00000110: 20 43 48 41 4E 0D 50 52  54 20 3D 24 45 33 44 38  | CHAN.PRT =$E3D8|
00000120: 20 3B 50 52 49 4E 54 20  43 48 41 52 41 43 54 45  | ;PRINT CHARACTE|
00000130: 52 20 54 4F 20 53 43 52  45 45 4E 0D 53 54 4F 50  |R TO SCREEN.STOP|
00000140: 31 20 3D 24 46 33 30 31  20 3B 54 45 53 54 20 46  |1 =$F301 ;TEST F|
00000150: 4F 52 20 53 54 4F 50 20  4B 45 59 0D 46 43 4C 4F  |OR STOP KEY.FCLO|
00000160: 53 45 20 3D 24 46 32 41  45 20 3B 43 4C 4F 53 45  |SE =$F2AE ;CLOSE|
00000170: 20 46 49 4C 45 20 2E 41  0D 4C 41 20 3D 24 44 32  | FILE .A.LA =$D2|
00000180: 20 3B 4C 4F 47 49 43 41  4C 20 44 45 56 49 43 45  | ;LOGICAL DEVICE|
00000190: 20 4E 55 4D 42 45 52 0D  46 41 20 3D 24 44 34 20  | NUMBER.FA =$D4 |
000001A0: 3B 50 52 49 4D 41 52 59  20 41 44 44 52 45 53 53  |;PRIMARY ADDRESS|
000001B0: 0D 53 41 20 3D 24 44 33  20 3B 53 45 43 4F 4E 44  |.SA =$D3 ;SECOND|
000001C0: 41 52 59 20 43 4F 4D 4D  41 4E 44 0D 46 4E 41 44  |ARY COMMAND.FNAD|
000001D0: 52 20 3D 24 44 41 20 3B  41 44 44 52 45 53 53 20  |R =$DA ;ADDRESS |
000001E0: 4F 46 20 46 49 4C 45 20  4E 41 4D 45 0D 46 4E 4C  |OF FILE NAME.FNL|
000001F0: 45 4E 20 3D 24 44 31 20  3B 4C 45 4E 47 54 48 20  |EN =$D1 ;LENGTH |
00000200: 4F 46 20 46 49 4C 45 20  4E 41 4D 45 0D 46 4F 50  |OF FILE NAME.FOP|
00000210: 45 4E 20 3D 24 46 35 32  34 20 3B 4F 50 45 4E 20  |EN =$F524 ;OPEN |
00000220: 46 49 4C 45 20 4C 41 2C  46 41 2C 53 41 0D 2E 53  |FILE LA,FA,SA..S|
00000230: 4B 49 0D 3B 50 41 47 45  20 5A 45 52 4F 20 56 41  |KI.;PAGE ZERO VA|
00000240: 52 49 41 42 4C 45 53 0D  2A 20 3D 24 34 32 0D 4C  |RIABLES.* =$42.L|
00000250: 44 41 44 44 52 20 2A 3D  2A 2B 32 20 3B 4C 4F 41  |DADDR *=*+2 ;LOA|
00000260: 44 20 41 44 44 52 45 53  53 0D 2E 53 4B 49 0D 3B  |D ADDRESS..SKI.;|
00000270: 57 4F 52 4B 49 4E 47 20  56 41 52 49 41 42 4C 45  |WORKING VARIABLE|
00000280: 53 0D 2A 20 3D 24 32 37  41 0D 43 48 4B 53 55 4D  |S.* =$27A.CHKSUM|
00000290: 20 2A 3D 2A 2B 32 20 3B  43 48 45 43 4B 53 55 4D  | *=*+2 ;CHECKSUM|
000002A0: 20 4F 46 20 43 55 52 52  45 4E 54 0D 42 59 54 43  | OF CURRENT.BYTC|
000002B0: 4E 54 20 2A 3D 2A 2B 31  20 3B 43 4F 55 4E 54 20  |NT *=*+1 ;COUNT |
000002C0: 4F 46 20 43 55 52 52 45  4E 54 20 42 59 54 45 53  |OF CURRENT BYTES|
000002D0: 0D 52 45 43 43 4E 54 20  2A 3D 2A 2B 32 20 3B 54  |.RECCNT *=*+2 ;T|
000002E0: 4F 54 41 4C 20 52 45 43  4F 52 44 53 20 4C 4F 41  |OTAL RECORDS LOA|
000002F0: 44 45 44 0D 49 4E 44 45  58 20 2A 3D 2A 2B 31 20  |DED.INDEX *=*+1 |
00000300: 3B 49 4E 44 45 58 20 46  52 4F 4D 20 4C 4F 41 44  |;INDEX FROM LOAD|
00000310: 20 41 44 44 52 45 53 53  0D 44 41 54 41 20 2A 3D  | ADDRESS.DATA *=|
00000320: 2A 2B 31 20 3B 48 45 58  20 42 59 54 45 20 49 4E  |*+1 ;HEX BYTE IN|
00000330: 20 54 52 41 4E 53 49 54  0D 43 48 41 4E 20 2A 3D  | TRANSIT.CHAN *=|
00000340: 2A 2B 31 20 3B 43 55 52  52 45 4E 54 20 43 48 41  |*+1 ;CURRENT CHA|
00000350: 4E 4E 45 4C 20 46 4C 41  47 0D 4F 42 4A 46 49 4C  |NNEL FLAG.OBJFIL|
00000360: 20 2A 3D 2A 2B 31 36 20  3B 55 53 45 52 20 4F 42  | *=*+16 ;USER OB|
00000370: 4A 45 43 54 20 46 49 4C  45 20 4E 41 4D 45 0D 4F  |JECT FILE NAME.O|
00000380: 42 4A 4C 45 4E 20 2A 3D  2A 2B 31 20 3B 4C 45 4E  |BJLEN *=*+1 ;LEN|
00000390: 47 54 48 20 4F 46 20 46  49 4C 45 20 4E 41 4D 45  |GTH OF FILE NAME|
000003A0: 0D 2E 50 41 47 20 27 50  45 54 20 4C 4F 41 44 45  |..PAG 'PET LOADE|
000003B0: 52 27 0D 2A 3D 24 37 44  30 30 0D 4C 4F 41 44 20  |R'.*=$7D00.LOAD |
000003C0: 4C 44 41 20 23 30 0D 53  54 41 20 43 48 41 4E 0D  |LDA #0.STA CHAN.|
000003D0: 53 54 41 20 4F 42 4A 4C  45 4E 0D 53 54 41 20 52  |STA OBJLEN.STA R|
000003E0: 45 43 43 4E 54 0D 53 54  41 20 52 45 43 43 4E 54  |ECCNT.STA RECCNT|
000003F0: 2B 31 0D 4C 44 58 20 23  4F 42 4A 4D 53 47 2D 4D  |+1.LDX #OBJMSG-M|
00000400: 53 47 53 0D 4A 53 52 20  4D 53 47 0D 4C 44 58 20  |SGS.JSR MSG.LDX |
00000410: 23 34 30 0D 53 54 58 20  49 4E 44 45 58 0D 4C 44  |#40.STX INDEX.LD|
00000420: 31 30 20 44 45 43 20 49  4E 44 45 58 0D 42 45 51  |10 DEC INDEX.BEQ|
00000430: 20 4C 4F 41 44 0D 4A 53  52 20 42 41 53 49 4E 0D  | LOAD.JSR BASIN.|
00000440: 43 4D 50 20 23 24 32 30  0D 42 45 51 20 4C 44 31  |CMP #$20.BEQ LD1|
00000450: 30 0D 43 4D 50 20 23 24  44 0D 42 45 51 20 4C 4F  |0.CMP #$D.BEQ LO|
00000460: 41 44 0D 4C 44 58 20 23  30 0D 53 54 58 20 4F 42  |AD.LDX #0.STX OB|
00000470: 4A 4C 45 4E 0D 42 45 51  20 4C 44 33 30 0D 4C 44  |JLEN.BEQ LD30.LD|
00000480: 32 30 20 4A 53 52 20 42  41 53 49 4E 0D 43 4D 50  |20 JSR BASIN.CMP|
00000490: 20 23 24 32 30 0D 42 45  51 20 4C 44 34 30 0D 4C  | #$20.BEQ LD40.L|
000004A0: 44 33 30 20 43 4D 50 20  23 24 44 0D 42 45 51 20  |D30 CMP #$D.BEQ |
000004B0: 4C 44 34 30 0D 4C 44 58  20 4F 42 4A 4C 45 4E 0D  |LD40.LDX OBJLEN.|
000004C0: 43 50 58 20 23 31 34 0D  42 45 51 20 4C 4F 41 44  |CPX #14.BEQ LOAD|
000004D0: 0D 53 54 41 20 4F 42 4A  46 49 4C 2C 58 0D 49 4E  |.STA OBJFIL,X.IN|
000004E0: 58 0D 53 54 58 20 4F 42  4A 4C 45 4E 0D 4A 4D 50  |X.STX OBJLEN.JMP|
000004F0: 20 4C 44 32 30 0D 4C 44  34 30 20 4C 44 41 20 23  | LD20.LD40 LDA #|
00000500: 27 2C 0D 53 54 41 20 4F  42 4A 46 49 4C 2C 58 0D  |',.STA OBJFIL,X.|
00000510: 49 4E 58 0D 4C 44 41 20  23 27 53 0D 53 54 41 20  |INX.LDA #'S.STA |
00000520: 4F 42 4A 46 49 4C 2C 58  0D 49 4E 58 0D 53 54 58  |OBJFIL,X.INX.STX|
00000530: 20 4F 42 4A 4C 45 4E 0D  4C 44 41 20 23 24 44 0D  | OBJLEN.LDA #$D.|
00000540: 4A 53 52 20 50 52 54 0D  3B 49 4E 49 54 20 44 49  |JSR PRT.;INIT DI|
00000550: 53 4B 0D 4C 44 41 20 23  37 0D 53 54 41 20 4C 41  |SK.LDA #7.STA LA|
00000560: 0D 4C 44 41 20 23 32 0D  53 54 41 20 46 4E 4C 45  |.LDA #2.STA FNLE|
00000570: 4E 0D 4C 44 41 20 23 38  0D 53 54 41 20 46 41 0D  |N.LDA #8.STA FA.|
00000580: 4C 44 41 20 23 31 35 0D  53 54 41 20 53 41 0D 4C  |LDA #15.STA SA.L|
00000590: 44 41 20 23 27 49 0D 53  54 41 20 43 48 4B 53 55  |DA #'I.STA CHKSU|
000005A0: 4D 0D 4C 44 41 20 23 27  30 0D 53 54 41 20 43 48  |M.LDA #'0.STA CH|
000005B0: 4B 53 55 4D 2B 31 0D 4C  44 41 20 23 3E 43 48 4B  |KSUM+1.LDA #>CHK|
000005C0: 53 55 4D 0D 53 54 41 20  46 4E 41 44 52 2B 31 0D  |SUM.STA FNADR+1.|
000005D0: 4C 44 41 20 23 3C 43 48  4B 53 55 4D 0D 53 54 41  |LDA #<CHKSUM.STA|
000005E0: 20 46 4E 41 44 52 0D 4A  53 52 20 46 4F 50 45 4E  | FNADR.JSR FOPEN|
000005F0: 0D 4C 44 41 20 23 37 0D  4A 53 52 20 46 43 4C 4F  |.LDA #7.JSR FCLO|
00000600: 53 45 0D 4C 44 41 20 23  27 31 0D 53 54 41 20 43  |SE.LDA #'1.STA C|
00000610: 48 4B 53 55 4D 2B 31 0D  4A 53 52 20 46 4F 50 45  |HKSUM+1.JSR FOPE|
00000620: 4E 0D 4C 44 41 20 23 37  0D 4A 53 52 20 46 43 4C  |N.LDA #7.JSR FCL|
00000630: 4F 53 45 0D 3B 4F 50 45  4E 20 4F 42 4A 45 43 54  |OSE.;OPEN OBJECT|
00000640: 20 46 49 4C 45 0D 4C 44  41 20 23 37 0D 53 54 41  | FILE.LDA #7.STA|
00000650: 20 53 41 0D 4C 44 41 20  23 3E 4F 42 4A 46 49 4C  | SA.LDA #>OBJFIL|
00000660: 0D 53 54 41 20 46 4E 41  44 52 2B 31 0D 4C 44 41  |.STA FNADR+1.LDA|
00000670: 20 23 3C 4F 42 4A 46 49  4C 0D 53 54 41 20 46 4E  | #<OBJFIL.STA FN|
00000680: 41 44 52 0D 4C 44 41 20  4F 42 4A 4C 45 4E 0D 53  |ADR.LDA OBJLEN.S|
00000690: 54 41 20 46 4E 4C 45 4E  0D 4A 53 52 20 46 4F 50  |TA FNLEN.JSR FOP|
000006A0: 45 4E 0D 3B 42 45 47 49  4E 20 4C 4F 41 46 0D 4C  |EN.;BEGIN LOAF.L|
000006B0: 48 31 20 4A 53 52 20 53  54 4F 50 31 20 3B 53 54  |H1 JSR STOP1 ;ST|
000006C0: 4F 50 20 4B 45 59 3F 0D  42 45 51 20 45 52 52 4F  |OP KEY?.BEQ ERRO|
000006D0: 52 33 20 3B 59 45 53 2E  2E 2E 42 52 45 41 4B 0D  |R3 ;YES...BREAK.|
000006E0: 4A 53 52 20 47 45 54 43  48 52 0D 43 4D 50 20 23  |JSR GETCHR.CMP #|
000006F0: 27 3B 20 3B 52 45 43 4F  52 44 20 49 4E 49 54 49  |'; ;RECORD INITI|
00000700: 41 54 4F 52 3F 0D 42 4E  45 20 4C 48 31 20 3B 4E  |ATOR?.BNE LH1 ;N|
00000710: 4F 2E 2E 2E 4B 45 45 50  20 4C 4F 4F 4B 49 4E 47  |O...KEEP LOOKING|
00000720: 0D 2E 53 4B 49 0D 4C 44  41 20 23 30 0D 53 54 41  |..SKI.LDA #0.STA|
00000730: 20 43 48 4B 53 55 4D 0D  53 54 41 20 43 48 4B 53  | CHKSUM.STA CHKS|
00000740: 55 4D 2B 31 0D 53 54 41  20 49 4E 44 45 58 0D 4A  |UM+1.STA INDEX.J|
00000750: 53 52 20 47 45 54 42 59  54 20 3B 52 45 41 44 20  |SR GETBYT ;READ |
00000760: 42 59 54 45 20 43 4F 55  4E 54 0D 42 4E 45 20 4C  |BYTE COUNT.BNE L|
00000770: 48 32 20 3B 4E 4F 54 20  4C 41 53 54 20 52 45 43  |H2 ;NOT LAST REC|
00000780: 4F 52 44 0D 3B 43 48 45  43 4B 20 45 4E 44 20 52  |ORD.;CHECK END R|
00000790: 45 43 4F 52 44 20 43 4F  55 4E 54 0D 4A 53 52 20  |ECORD COUNT.JSR |
000007A0: 47 45 54 42 59 54 0D 43  4D 50 20 52 45 43 43 4E  |GETBYT.CMP RECCN|
000007B0: 54 2B 31 0D 42 4E 45 20  45 52 52 4F 52 34 0D 4A  |T+1.BNE ERROR4.J|
000007C0: 53 52 20 47 45 54 42 59  54 0D 43 4D 50 20 52 45  |SR GETBYT.CMP RE|
000007D0: 43 43 4E 54 0D 42 4E 45  20 45 52 52 4F 52 34 0D  |CCNT.BNE ERROR4.|
000007E0: 42 45 51 20 44 4F 4E 45  0D 2E 53 4B 49 0D 4C 48  |BEQ DONE..SKI.LH|
000007F0: 32 20 53 54 41 20 42 59  54 43 4E 54 0D 49 4E 43  |2 STA BYTCNT.INC|
00000800: 20 52 45 43 43 4E 54 0D  42 4E 45 20 4C 48 31 42  | RECCNT.BNE LH1B|
00000810: 0D 49 4E 43 20 52 45 43  43 4E 54 2B 31 0D 4C 48  |.INC RECCNT+1.LH|
00000820: 31 42 20 4A 53 52 20 41  44 44 43 48 4B 20 3B 4C  |1B JSR ADDCHK ;L|
00000830: 45 4E 47 48 54 20 54 4F  20 43 48 45 43 4B 53 55  |ENGHT TO CHECKSU|
00000840: 4D 0D 4A 53 52 20 47 45  54 42 59 54 0D 53 54 41  |M.JSR GETBYT.STA|
00000850: 20 4C 44 41 44 44 52 2B  31 20 3B 53 54 41 52 54  | LDADDR+1 ;START|
00000860: 20 41 44 44 52 45 53 53  20 48 49 0D 4A 53 52 20  | ADDRESS HI.JSR |
00000870: 41 44 44 43 48 4B 0D 4A  53 52 20 47 45 54 42 59  |ADDCHK.JSR GETBY|
00000880: 54 0D 53 54 41 20 4C 44  41 44 44 52 20 3B 53 54  |T.STA LDADDR ;ST|
00000890: 41 52 54 20 41 44 44 52  45 53 53 20 4C 4F 0D 4A  |ART ADDRESS LO.J|
000008A0: 53 52 20 41 44 44 43 48  4B 0D 2E 53 4B 49 0D 4C  |SR ADDCHK..SKI.L|
000008B0: 48 33 20 4A 53 52 20 47  45 54 42 59 54 0D 4C 44  |H3 JSR GETBYT.LD|
000008C0: 59 20 49 4E 44 45 58 0D  49 4E 43 20 49 4E 44 45  |Y INDEX.INC INDE|
000008D0: 58 0D 53 54 41 20 28 4C  44 41 44 44 52 29 59 0D  |X.STA (LDADDR)Y.|
000008E0: 43 4D 50 20 28 4C 44 41  44 44 52 29 59 20 3B 47  |CMP (LDADDR)Y ;G|
000008F0: 4F 4F 44 20 53 54 4F 52  45 3F 0D 42 4E 45 20 45  |OOD STORE?.BNE E|
00000900: 52 52 4F 52 31 20 3B 4E  4F 2E 2E 2E 0D 4A 53 52  |RROR1 ;NO....JSR|
00000910: 20 41 44 44 43 48 4B 0D  44 45 43 20 42 59 54 43  | ADDCHK.DEC BYTC|
00000920: 4E 54 20 3B 4C 41 53 54  20 42 59 54 45 3F 0D 42  |NT ;LAST BYTE?.B|
00000930: 4E 45 20 4C 48 33 20 3B  4E 4F 2E 2E 2E 0D 2E 53  |NE LH3 ;NO.....S|
00000940: 4B 49 0D 4A 53 52 20 47  45 54 42 59 54 20 3B 54  |KI.JSR GETBYT ;T|
00000950: 45 53 54 20 43 48 45 43  4B 53 55 4D 20 48 49 0D  |EST CHECKSUM HI.|
00000960: 43 4D 50 20 43 48 4B 53  55 4D 2B 31 0D 42 4E 45  |CMP CHKSUM+1.BNE|
00000970: 20 45 52 52 4F 52 32 20  3B 43 48 45 43 4B 53 55  | ERROR2 ;CHECKSU|
00000980: 4D 20 45 52 52 4F 52 0D  4A 53 52 20 47 45 54 42  |M ERROR.JSR GETB|
00000990: 59 54 20 3B 47 45 54 20  43 48 45 43 4B 53 55 4D  |YT ;GET CHECKSUM|
000009A0: 20 4C 4F 0D 43 4D 50 20  43 48 4B 53 55 4D 0D 42  | LO.CMP CHKSUM.B|
000009B0: 4E 45 20 45 52 52 4F 52  32 20 3B 43 48 45 43 4B  |NE ERROR2 ;CHECK|
000009C0: 53 55 4D 20 45 52 52 4F  52 0D 42 45 51 20 4C 48  |SUM ERROR.BEQ LH|
000009D0: 31 20 3B 43 4F 4E 54 49  4E 55 45 20 4E 45 58 54  |1 ;CONTINUE NEXT|
000009E0: 20 52 45 43 4F 52 44 0D  2E 53 4B 49 20 35 0D 45  | RECORD..SKI 5.E|
000009F0: 52 52 4F 52 31 20 4C 44  58 20 23 43 4D 50 45 52  |RROR1 LDX #CMPER|
00000A00: 52 2D 4D 53 47 53 0D 2E  42 59 54 20 24 32 43 0D  |R-MSGS..BYT $2C.|
00000A10: 45 52 52 4F 52 32 20 4C  44 58 20 23 43 48 4B 45  |ERROR2 LDX #CHKE|
00000A20: 52 52 2D 4D 53 47 53 0D  2E 42 59 54 20 24 32 43  |RR-MSGS..BYT $2C|
00000A30: 0D 45 52 52 4F 52 33 20  4C 44 58 20 23 42 52 4B  |.ERROR3 LDX #BRK|
00000A40: 4D 53 47 2D 4D 53 47 53  0D 2E 42 59 54 20 24 32  |MSG-MSGS..BYT $2|
00000A50: 43 0D 45 52 52 4F 52 34  20 4C 44 58 20 23 52 45  |C.ERROR4 LDX #RE|
00000A60: 43 45 52 52 2D 4D 53 47  53 0D 4A 53 52 20 4D 53  |CERR-MSGS.JSR MS|
00000A70: 47 0D 2E 53 4B 49 0D 44  4F 4E 45 20 4C 44 41 20  |G..SKI.DONE LDA |
00000A80: 23 37 0D 4A 53 52 20 46  43 4C 4F 53 45 0D 4A 53  |#7.JSR FCLOSE.JS|
00000A90: 52 20 43 4C 52 43 48 4E  0D 4C 44 58 20 23 44 4E  |R CLRCHN.LDX #DN|
00000AA0: 4D 53 47 2D 4D 53 47 53  0D 4A 53 52 20 4D 53 47  |MSG-MSGS.JSR MSG|
00000AB0: 0D 4A 4D 50 20 52 45 41  44 59 0D 2E 53 4B 49 20  |.JMP READY..SKI |
00000AC0: 35 0D 4D 53 47 20 53 54  58 20 49 4E 44 45 58 0D  |5.MSG STX INDEX.|
00000AD0: 4D 53 31 30 20 4C 44 58  20 49 4E 44 45 58 0D 4C  |MS10 LDX INDEX.L|
00000AE0: 44 41 20 4D 53 47 53 2C  58 0D 50 48 50 0D 41 4E  |DA MSGS,X.PHP.AN|
00000AF0: 44 20 23 24 37 46 0D 4A  53 52 20 50 52 54 0D 49  |D #$7F.JSR PRT.I|
00000B00: 4E 43 20 49 4E 44 45 58  0D 50 4C 50 0D 42 50 4C  |NC INDEX.PLP.BPL|
00000B10: 20 4D 53 31 30 0D 52 54  53 0D 2E 53 4B 49 0D 4D  | MS10.RTS..SKI.M|
00000B20: 53 47 53 0D 52 45 43 45  52 52 20 2E 42 59 54 20  |SGS.RECERR .BYT |
00000B30: 24 44 2C 27 42 41 44 20  52 45 43 4F 52 44 20 43  |$D,'BAD RECORD C|
00000B40: 4F 55 4E 27 2C 24 44 34  0D 42 52 4B 4D 53 47 20  |OUN',$D4.BRKMSG |
00000B50: 2E 42 59 54 20 24 44 2C  27 42 52 45 41 4B 27 2C  |.BYT $D,'BREAK',|
00000B60: 24 38 44 0D 44 4E 4D 53  47 20 2E 42 59 54 20 24  |$8D.DNMSG .BYT $|
00000B70: 44 2C 27 45 4E 44 20 4F  46 20 4C 4F 41 27 2C 24  |D,'END OF LOA',$|
00000B80: 43 34 0D 43 4D 50 45 52  52 20 2E 42 59 54 20 24  |C4.CMPERR .BYT $|
00000B90: 44 2C 27 4E 4F 4E 2D 52  41 4D 20 4C 4F 41 27 2C  |D,'NON-RAM LOA',|
00000BA0: 24 43 34 0D 43 48 4B 45  52 52 20 2E 42 59 54 20  |$C4.CHKERR .BYT |
00000BB0: 24 44 2C 27 43 48 45 43  4B 53 55 4D 20 45 52 52  |$D,'CHECKSUM ERR|
00000BC0: 4F 27 2C 24 44 32 0D 4F  42 4A 4D 53 47 20 2E 42  |O',$D2.OBJMSG .B|
00000BD0: 59 54 20 24 44 2C 27 4F  42 4A 45 43 54 20 46 49  |YT $D,'OBJECT FI|
00000BE0: 4C 45 3F 27 2C 24 41 30  0D 2E 53 4B 49 20 35 0D  |LE?',$A0..SKI 5.|
00000BF0: 47 45 54 42 59 54 20 4A  53 52 20 47 45 54 43 48  |GETBYT JSR GETCH|
00000C00: 52 0D 4A 53 52 20 48 45  58 49 54 0D 41 53 4C 20  |R.JSR HEXIT.ASL |
00000C10: 41 0D 41 53 4C 20 41 0D  41 53 4C 20 41 0D 41 53  |A.ASL A.ASL A.AS|
00000C20: 4C 20 41 0D 53 54 41 20  44 41 54 41 0D 4A 53 52  |L A.STA DATA.JSR|
00000C30: 20 47 45 54 43 48 52 0D  4A 53 52 20 48 45 58 49  | GETCHR.JSR HEXI|
00000C40: 54 0D 4F 52 41 20 44 41  54 41 0D 52 54 53 0D 2E  |T.ORA DATA.RTS..|
00000C50: 53 4B 49 20 35 0D 48 45  58 49 54 20 43 4D 50 20  |SKI 5.HEXIT CMP |
00000C60: 23 27 3A 20 3B 4E 55 4D  45 52 49 43 3F 0D 50 48  |#': ;NUMERIC?.PH|
00000C70: 50 0D 41 4E 44 20 23 24  30 46 0D 50 4C 50 0D 42  |P.AND #$0F.PLP.B|
00000C80: 43 43 20 48 45 58 4F 55  54 20 3B 30 2D 39 0D 41  |CC HEXOUT ;0-9.A|
00000C90: 44 43 20 23 38 20 3B 41  4C 50 48 41 20 41 44 44  |DC #8 ;ALPHA ADD|
00000CA0: 20 38 2B 43 59 3D 39 0D  48 45 58 4F 55 54 20 52  | 8+CY=9.HEXOUT R|
00000CB0: 54 53 0D 2E 53 4B 49 20  35 0D 47 45 54 43 48 52  |TS..SKI 5.GETCHR|
00000CC0: 20 4C 44 41 20 43 48 41  4E 0D 43 4D 50 20 23 37  | LDA CHAN.CMP #7|
00000CD0: 0D 42 45 51 20 47 45 54  31 30 0D 4A 53 52 20 43  |.BEQ GET10.JSR C|
00000CE0: 4C 52 43 48 4E 0D 4C 44  58 20 23 37 0D 53 54 58  |LRCHN.LDX #7.STX|
00000CF0: 20 43 48 41 4E 0D 4A 53  52 20 43 48 4B 49 4E 0D  | CHAN.JSR CHKIN.|
00000D00: 47 45 54 31 30 20 4A 53  52 20 42 41 53 49 4E 0D  |GET10 JSR BASIN.|
00000D10: 50 48 41 0D 4A 53 52 20  50 52 54 0D 50 4C 41 0D  |PHA.JSR PRT.PLA.|
00000D20: 52 54 53 0D 2E 53 4B 49  20 35 0D 41 44 44 43 48  |RTS..SKI 5.ADDCH|
00000D30: 4B 20 43 4C 43 0D 41 44  43 20 43 48 4B 53 55 4D  |K CLC.ADC CHKSUM|
00000D40: 0D 53 54 41 20 43 48 4B  53 55 4D 0D 42 43 43 20  |.STA CHKSUM.BCC |
00000D50: 41 44 44 31 30 0D 49 4E  43 20 43 48 4B 53 55 4D  |ADD10.INC CHKSUM|
00000D60: 2B 31 0D 41 44 44 31 30  20 52 54 53 0D 2E 45 4E  |+1.ADD10 RTS..EN|
00000D70: 44 0D 2A                                          |D.*             |
;LOADER FOR RESIDENT PET 6502.; ASSEMBLE
R..SKI.;JUNE 19,1979..SKI.;CONSTANTS FRO
M PET BASIC.READY =$C389.CLRCHN =$FFCC ;
CLOSE I/O CHANNELS.CHKIN =$F770 ;OPEN IN
PUT CHANNEL.BASIN =$F1E1 ;INPUT SOURCE B
YTE.CKOUT =$F7BC ;OPEN OUTPUT CHANNEL.BA
SOUT =$F232 ;OUTPUT CHARACTER TO CHAN.PR
T =$E3D8 ;PRINT CHARACTER TO SCREEN.STOP
1 =$F301 ;TEST FOR STOP KEY.FCLOSE =$F2A
E ;CLOSE FILE .A.LA =$D2 ;LOGICAL DEVICE
 NUMBER.FA =$D4 ;PRIMARY ADDRESS.SA =$D3
 ;SECONDARY COMMAND.FNADR =$DA ;ADDRESS 
OF FILE NAME.FNLEN =$D1 ;LENGTH OF FILE 
NAME.FOPEN =$F524 ;OPEN FILE LA,FA,SA..S
KI.;PAGE ZERO VARIABLES.* =$42.LDADDR *=
*+2 ;LOAD ADDRESS..SKI.;WORKING VARIABLE
S.* =$27A.CHKSUM *=*+2 ;CHECKSUM OF CURR
ENT.BYTCNT *=*+1 ;COUNT OF CURRENT BYTES
.RECCNT *=*+2 ;TOTAL RECORDS LOADED.INDE
X *=*+1 ;INDEX FROM LOAD ADDRESS.DATA *=
*+1 ;HEX BYTE IN TRANSIT.CHAN *=*+1 ;CUR
RENT CHANNEL FLAG.OBJFIL *=*+16 ;USER OB
JECT FILE NAME.OBJLEN *=*+1 ;LENGTH OF F
ILE NAME..PAG 'PET LOADER'.*=$7D00.LOAD 
LDA #0.STA CHAN.STA OBJLEN.STA RECCNT.ST
A RECCNT+1.LDX #OBJMSG-MSGS.JSR MSG.LDX 
#40.STX INDEX.LD10 DEC INDEX.BEQ LOAD.JS
R BASIN.CMP #$20.BEQ LD10.CMP #$D.BEQ LO
AD.LDX #0.STX OBJLEN.BEQ LD30.LD20 JSR B
ASIN.CMP #$20.BEQ LD40.LD30 CMP #$D.BEQ 
LD40.LDX OBJLEN.CPX #14.BEQ LOAD.STA OBJ
FIL,X.INX.STX OBJLEN.JMP LD20.LD40 LDA #
',.STA OBJFIL,X.INX.LDA #'S.STA OBJFIL,X
.INX.STX OBJLEN.LDA #$D.JSR PRT.;INIT DI
SK.LDA #7.STA LA.LDA #2.STA FNLEN.LDA #8
.STA FA.LDA #15.STA SA.LDA #'I.STA CHKSU
M.LDA #'0.STA CHKSUM+1.LDA #>CHKSUM.STA 
FNADR+1.LDA #<CHKSUM.STA FNADR.JSR FOPEN
.LDA #7.JSR FCLOSE.LDA #'1.STA CHKSUM+1.
JSR FOPEN.LDA #7.JSR FCLOSE.;OPEN OBJECT
 FILE.LDA #7.STA SA.LDA #>OBJFIL.STA FNA
DR+1.LDA #<OBJFIL.STA FNADR.LDA OBJLEN.S
TA FNLEN.JSR FOPEN.;BEGIN LOAF.LH1 JSR S
TOP1 ;STOP KEY?.BEQ ERROR3 ;YES...BREAK.
JSR GETCHR.CMP #'; ;RECORD INITIATOR?.BN
E LH1 ;NO...KEEP LOOKING..SKI.LDA #0.STA
 CHKSUM.STA CHKSUM+1.STA INDEX.JSR GETBY
T ;READ BYTE COUNT.BNE LH2 ;NOT LAST REC
ORD.;CHECK END RECORD COUNT.JSR GETBYT.C
MP RECCNT+1.BNE ERROR4.JSR GETBYT.CMP RE
CCNT.BNE ERROR4.BEQ DONE..SKI.LH2 STA BY
TCNT.INC RECCNT.BNE LH1B.INC RECCNT+1.LH
1B JSR ADDCHK ;LENGHT TO CHECKSUM.JSR GE
TBYT.STA LDADDR+1 ;START ADDRESS HI.JSR 
ADDCHK.JSR GETBYT.STA LDADDR ;START ADDR
ESS LO.JSR ADDCHK..SKI.LH3 JSR GETBYT.LD
Y INDEX.INC INDEX.STA (LDADDR)Y.CMP (LDA
DDR)Y ;GOOD STORE?.BNE ERROR1 ;NO....JSR
 ADDCHK.DEC BYTCNT ;LAST BYTE?.BNE LH3 ;
NO.....SKI.JSR GETBYT ;TEST CHECKSUM HI.
CMP CHKSUM+1.BNE ERROR2 ;CHECKSUM ERROR.
JSR GETBYT ;GET CHECKSUM LO.CMP CHKSUM.B
NE ERROR2 ;CHECKSUM ERROR.BEQ LH1 ;CONTI
NUE NEXT RECORD..SKI 5.ERROR1 LDX #CMPER
R-MSGS..BYT $2C.ERROR2 LDX #CHKERR-MSGS.
.BYT $2C.ERROR3 LDX #BRKMSG-MSGS..BYT $2
C.ERROR4 LDX #RECERR-MSGS.JSR MSG..SKI.D
ONE LDA #7.JSR FCLOSE.JSR CLRCHN.LDX #DN
MSG-MSGS.JSR MSG.JMP READY..SKI 5.MSG ST
X INDEX.MS10 LDX INDEX.LDA MSGS,X.PHP.AN
D #$7F.JSR PRT.INC INDEX.PLP.BPL MS10.RT
S..SKI.MSGS.RECERR .BYT $D,'BAD RECORD C
OUN',$D4.BRKMSG .BYT $D,'BREAK',$8D.DNMS
G .BYT $D,'END OF LOA',$C4.CMPERR .BYT $
D,'NON-RAM LOA',$C4.CHKERR .BYT $D,'CHEC
KSUM ERRO',$D2.OBJMSG .BYT $D,'OBJECT FI
LE?',$A0..SKI 5.GETBYT JSR GETCHR.JSR HE
XIT.ASL A.ASL A.ASL A.ASL A.STA DATA.JSR
 GETCHR.JSR HEXIT.ORA DATA.RTS..SKI 5.HE
XIT CMP #': ;NUMERIC?.PHP.AND #$0F.PLP.B
CC HEXOUT ;0-9.ADC #8 ;ALPHA ADD 8+CY=9.
HEXOUT RTS..SKI 5.GETCHR LDA CHAN.CMP #7
.BEQ GET10.JSR CLRCHN.LDX #7.STX CHAN.JS
R CHKIN.GET10 JSR BASIN.PHA.JSR PRT.PLA.
RTS..SKI 5.ADDCHK CLC.ADC CHKSUM.STA CHK
SUM.BCC ADD10.INC CHKSUM+1.ADD10 RTS..EN
D.*
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL