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 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL