CR-LOLOAD   4302
FILE INFORMATION
FILENAME(S): CR-LOLOAD   4302
FILE TYPE(S): SEQ
FILE SIZE: 3.5K
FIRST SEEN: 2025-11-30 21:23:55
APPEARS ON: 1 disk(s)
FILE HASH
719660986bdaccc151440dba41668dbfc9d0c9db8e40fd5cc2fdb0079f1f9eb4
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| C64 HULP 40 2 | CR-LOLOAD   4302 | SEQ | DuncanTwain | 24 | 2 | 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 3B 4C 49 4E 45 20 4F 46 20 42 41 53 49 |R'.;LINE OF BASI| 000003C0: 43 20 54 45 58 54 20 54 4F 20 41 4C 4C 4F 57 0D |C TEXT TO ALLOW.| 000003D0: 3B 20 55 53 45 52 20 54 4F 20 54 59 50 45 20 27 |; USER TO TYPE '| 000003E0: 52 55 4E 27 0D 2A 20 3D 24 34 30 30 0D 2E 42 59 |RUN'.* =$400..BY| 000003F0: 54 20 30 2C 31 33 2C 34 2C 31 30 2C 30 2C 31 35 |T 0,13,4,10,0,15| 00000400: 38 20 3B 31 30 20 53 59 53 0D 2E 42 59 54 20 27 |8 ;10 SYS..BYT '| 00000410: 28 31 30 33 39 29 27 2C 30 2C 30 2C 30 0D 2E 53 |(1039)',0,0,0..S| 00000420: 4B 49 20 35 0D 4C 4F 41 44 20 4C 44 41 20 23 30 |KI 5.LOAD LDA #0| 00000430: 0D 53 54 41 20 43 48 41 4E 0D 53 54 41 20 4F 42 |.STA CHAN.STA OB| 00000440: 4A 4C 45 4E 0D 53 54 41 20 52 45 43 43 4E 54 0D |JLEN.STA RECCNT.| 00000450: 53 54 41 20 52 45 43 43 4E 54 2B 31 0D 4C 44 58 |STA RECCNT+1.LDX| 00000460: 20 23 4F 42 4A 4D 53 47 2D 4D 53 47 53 0D 4A 53 | #OBJMSG-MSGS.JS| 00000470: 52 20 4D 53 47 0D 4C 44 58 20 23 34 30 0D 53 54 |R MSG.LDX #40.ST| 00000480: 58 20 49 4E 44 45 58 0D 4C 44 31 30 20 44 45 43 |X INDEX.LD10 DEC| 00000490: 20 49 4E 44 45 58 0D 42 45 51 20 4C 4F 41 44 0D | INDEX.BEQ LOAD.| 000004A0: 4A 53 52 20 42 41 53 49 4E 0D 43 4D 50 20 23 24 |JSR BASIN.CMP #$| 000004B0: 32 30 0D 42 45 51 20 4C 44 31 30 0D 43 4D 50 20 |20.BEQ LD10.CMP | 000004C0: 23 24 44 0D 42 45 51 20 4C 4F 41 44 0D 4C 44 58 |#$D.BEQ LOAD.LDX| 000004D0: 20 23 30 0D 53 54 58 20 4F 42 4A 4C 45 4E 0D 42 | #0.STX OBJLEN.B| 000004E0: 45 51 20 4C 44 33 30 0D 4C 44 32 30 20 4A 53 52 |EQ LD30.LD20 JSR| 000004F0: 20 42 41 53 49 4E 0D 43 4D 50 20 23 24 32 30 0D | BASIN.CMP #$20.| 00000500: 42 45 51 20 4C 44 34 30 0D 4C 44 33 30 20 43 4D |BEQ LD40.LD30 CM| 00000510: 50 20 23 24 44 0D 42 45 51 20 4C 44 34 30 0D 4C |P #$D.BEQ LD40.L| 00000520: 44 58 20 4F 42 4A 4C 45 4E 0D 43 50 58 20 23 31 |DX OBJLEN.CPX #1| 00000530: 34 0D 42 45 51 20 4C 4F 41 44 0D 53 54 41 20 4F |4.BEQ LOAD.STA O| 00000540: 42 4A 46 49 4C 2C 58 0D 49 4E 58 0D 53 54 58 20 |BJFIL,X.INX.STX | 00000550: 4F 42 4A 4C 45 4E 0D 4A 4D 50 20 4C 44 32 30 0D |OBJLEN.JMP LD20.| 00000560: 4C 44 34 30 20 4C 44 41 20 23 27 2C 0D 53 54 41 |LD40 LDA #',.STA| 00000570: 20 4F 42 4A 46 49 4C 2C 58 0D 49 4E 58 0D 4C 44 | OBJFIL,X.INX.LD| 00000580: 41 20 23 27 53 0D 53 54 41 20 4F 42 4A 46 49 4C |A #'S.STA OBJFIL| 00000590: 2C 58 0D 49 4E 58 0D 53 54 58 20 4F 42 4A 4C 45 |,X.INX.STX OBJLE| 000005A0: 4E 0D 4C 44 41 20 23 24 44 0D 4A 53 52 20 50 52 |N.LDA #$D.JSR PR| 000005B0: 54 0D 3B 49 4E 49 54 20 44 49 53 4B 0D 4C 44 41 |T.;INIT DISK.LDA| 000005C0: 20 23 37 0D 53 54 41 20 4C 41 0D 4C 44 41 20 23 | #7.STA LA.LDA #| 000005D0: 32 0D 53 54 41 20 46 4E 4C 45 4E 0D 4C 44 41 20 |2.STA FNLEN.LDA | 000005E0: 23 38 0D 53 54 41 20 46 41 0D 4C 44 41 20 23 31 |#8.STA FA.LDA #1| 000005F0: 35 0D 53 54 41 20 53 41 0D 4C 44 41 20 23 27 49 |5.STA SA.LDA #'I| 00000600: 0D 53 54 41 20 43 48 4B 53 55 4D 0D 4C 44 41 20 |.STA CHKSUM.LDA | 00000610: 23 27 30 0D 53 54 41 20 43 48 4B 53 55 4D 2B 31 |#'0.STA CHKSUM+1| 00000620: 0D 4C 44 41 20 23 3E 43 48 4B 53 55 4D 0D 53 54 |.LDA #>CHKSUM.ST| 00000630: 41 20 46 4E 41 44 52 2B 31 0D 4C 44 41 20 23 3C |A FNADR+1.LDA #<| 00000640: 43 48 4B 53 55 4D 0D 53 54 41 20 46 4E 41 44 52 |CHKSUM.STA FNADR| 00000650: 0D 4A 53 52 20 46 4F 50 45 4E 0D 4C 44 41 20 23 |.JSR FOPEN.LDA #| 00000660: 37 0D 4A 53 52 20 46 43 4C 4F 53 45 0D 4C 44 41 |7.JSR FCLOSE.LDA| 00000670: 20 23 27 31 0D 53 54 41 20 43 48 4B 53 55 4D 2B | #'1.STA CHKSUM+| 00000680: 31 0D 4A 53 52 20 46 4F 50 45 4E 0D 4C 44 41 20 |1.JSR FOPEN.LDA | 00000690: 23 37 0D 4A 53 52 20 46 43 4C 4F 53 45 0D 3B 4F |#7.JSR FCLOSE.;O| 000006A0: 50 45 4E 20 4F 42 4A 45 43 54 20 46 49 4C 45 0D |PEN OBJECT FILE.| 000006B0: 4C 44 41 20 23 37 0D 53 54 41 20 53 41 0D 4C 44 |LDA #7.STA SA.LD| 000006C0: 41 20 23 3E 4F 42 4A 46 49 4C 0D 53 54 41 20 46 |A #>OBJFIL.STA F| 000006D0: 4E 41 44 52 2B 31 0D 4C 44 41 20 23 3C 4F 42 4A |NADR+1.LDA #<OBJ| 000006E0: 46 49 4C 0D 53 54 41 20 46 4E 41 44 52 0D 4C 44 |FIL.STA FNADR.LD| 000006F0: 41 20 4F 42 4A 4C 45 4E 0D 53 54 41 20 46 4E 4C |A OBJLEN.STA FNL| 00000700: 45 4E 0D 4A 53 52 20 46 4F 50 45 4E 0D 3B 42 45 |EN.JSR FOPEN.;BE| 00000710: 47 49 4E 20 4C 4F 41 46 0D 4C 48 31 20 4A 53 52 |GIN LOAF.LH1 JSR| 00000720: 20 53 54 4F 50 31 20 3B 53 54 4F 50 20 4B 45 59 | STOP1 ;STOP KEY| 00000730: 3F 0D 42 45 51 20 45 52 52 4F 52 33 20 3B 59 45 |?.BEQ ERROR3 ;YE| 00000740: 53 2E 2E 2E 42 52 45 41 4B 0D 4A 53 52 20 47 45 |S...BREAK.JSR GE| 00000750: 54 43 48 52 0D 43 4D 50 20 23 27 3B 20 3B 52 45 |TCHR.CMP #'; ;RE| 00000760: 43 4F 52 44 20 49 4E 49 54 49 41 54 4F 52 3F 0D |CORD INITIATOR?.| 00000770: 42 4E 45 20 4C 48 31 20 3B 4E 4F 2E 2E 2E 4B 45 |BNE LH1 ;NO...KE| 00000780: 45 50 20 4C 4F 4F 4B 49 4E 47 0D 2E 53 4B 49 0D |EP LOOKING..SKI.| 00000790: 4C 44 41 20 23 30 0D 53 54 41 20 43 48 4B 53 55 |LDA #0.STA CHKSU| 000007A0: 4D 0D 53 54 41 20 43 48 4B 53 55 4D 2B 31 0D 53 |M.STA CHKSUM+1.S| 000007B0: 54 41 20 49 4E 44 45 58 0D 4A 53 52 20 47 45 54 |TA INDEX.JSR GET| 000007C0: 42 59 54 20 3B 52 45 41 44 20 42 59 54 45 20 43 |BYT ;READ BYTE C| 000007D0: 4F 55 4E 54 0D 42 4E 45 20 4C 48 32 20 3B 4E 4F |OUNT.BNE LH2 ;NO| 000007E0: 54 20 4C 41 53 54 20 52 45 43 4F 52 44 0D 3B 43 |T LAST RECORD.;C| 000007F0: 48 45 43 4B 20 45 4E 44 20 52 45 43 4F 52 44 20 |HECK END RECORD | 00000800: 43 4F 55 4E 54 0D 4A 53 52 20 47 45 54 42 59 54 |COUNT.JSR GETBYT| 00000810: 0D 43 4D 50 20 52 45 43 43 4E 54 2B 31 0D 42 4E |.CMP RECCNT+1.BN| 00000820: 45 20 45 52 52 4F 52 34 0D 4A 53 52 20 47 45 54 |E ERROR4.JSR GET| 00000830: 42 59 54 0D 43 4D 50 20 52 45 43 43 4E 54 0D 42 |BYT.CMP RECCNT.B| 00000840: 4E 45 20 45 52 52 4F 52 34 0D 42 45 51 20 44 4F |NE ERROR4.BEQ DO| 00000850: 4E 45 0D 2E 53 4B 49 0D 4C 48 32 20 53 54 41 20 |NE..SKI.LH2 STA | 00000860: 42 59 54 43 4E 54 0D 49 4E 43 20 52 45 43 43 4E |BYTCNT.INC RECCN| 00000870: 54 0D 42 4E 45 20 4C 48 31 42 0D 49 4E 43 20 52 |T.BNE LH1B.INC R| 00000880: 45 43 43 4E 54 2B 31 0D 4C 48 31 42 20 4A 53 52 |ECCNT+1.LH1B JSR| 00000890: 20 41 44 44 43 48 4B 20 3B 4C 45 4E 47 48 54 20 | ADDCHK ;LENGHT | 000008A0: 54 4F 20 43 48 45 43 4B 53 55 4D 0D 4A 53 52 20 |TO CHECKSUM.JSR | 000008B0: 47 45 54 42 59 54 0D 53 54 41 20 4C 44 41 44 44 |GETBYT.STA LDADD| 000008C0: 52 2B 31 20 3B 53 54 41 52 54 20 41 44 44 52 45 |R+1 ;START ADDRE| 000008D0: 53 53 20 48 49 0D 4A 53 52 20 41 44 44 43 48 4B |SS HI.JSR ADDCHK| 000008E0: 0D 4A 53 52 20 47 45 54 42 59 54 0D 53 54 41 20 |.JSR GETBYT.STA | 000008F0: 4C 44 41 44 44 52 20 3B 53 54 41 52 54 20 41 44 |LDADDR ;START AD| 00000900: 44 52 45 53 53 20 4C 4F 0D 4A 53 52 20 41 44 44 |DRESS LO.JSR ADD| 00000910: 43 48 4B 0D 2E 53 4B 49 0D 4C 48 33 20 4A 53 52 |CHK..SKI.LH3 JSR| 00000920: 20 47 45 54 42 59 54 0D 4C 44 59 20 49 4E 44 45 | GETBYT.LDY INDE| 00000930: 58 0D 49 4E 43 20 49 4E 44 45 58 0D 53 54 41 20 |X.INC INDEX.STA | 00000940: 28 4C 44 41 44 44 52 29 59 0D 43 4D 50 20 28 4C |(LDADDR)Y.CMP (L| 00000950: 44 41 44 44 52 29 59 20 3B 47 4F 4F 44 20 53 54 |DADDR)Y ;GOOD ST| 00000960: 4F 52 45 3F 0D 42 4E 45 20 45 52 52 4F 52 31 20 |ORE?.BNE ERROR1 | 00000970: 3B 4E 4F 2E 2E 2E 0D 4A 53 52 20 41 44 44 43 48 |;NO....JSR ADDCH| 00000980: 4B 0D 44 45 43 20 42 59 54 43 4E 54 20 3B 4C 41 |K.DEC BYTCNT ;LA| 00000990: 53 54 20 42 59 54 45 3F 0D 42 4E 45 20 4C 48 33 |ST BYTE?.BNE LH3| 000009A0: 20 3B 4E 4F 2E 2E 2E 0D 2E 53 4B 49 0D 4A 53 52 | ;NO.....SKI.JSR| 000009B0: 20 47 45 54 42 59 54 20 3B 54 45 53 54 20 43 48 | GETBYT ;TEST CH| 000009C0: 45 43 4B 53 55 4D 20 48 49 0D 43 4D 50 20 43 48 |ECKSUM HI.CMP CH| 000009D0: 4B 53 55 4D 2B 31 0D 42 4E 45 20 45 52 52 4F 52 |KSUM+1.BNE ERROR| 000009E0: 32 20 3B 43 48 45 43 4B 53 55 4D 20 45 52 52 4F |2 ;CHECKSUM ERRO| 000009F0: 52 0D 4A 53 52 20 47 45 54 42 59 54 20 3B 47 45 |R.JSR GETBYT ;GE| 00000A00: 54 20 43 48 45 43 4B 53 55 4D 20 4C 4F 0D 43 4D |T CHECKSUM LO.CM| 00000A10: 50 20 43 48 4B 53 55 4D 0D 42 4E 45 20 45 52 52 |P CHKSUM.BNE ERR| 00000A20: 4F 52 32 20 3B 43 48 45 43 4B 53 55 4D 20 45 52 |OR2 ;CHECKSUM ER| 00000A30: 52 4F 52 0D 42 45 51 20 4C 48 31 20 3B 43 4F 4E |ROR.BEQ LH1 ;CON| 00000A40: 54 49 4E 55 45 20 4E 45 58 54 20 52 45 43 4F 52 |TINUE NEXT RECOR| 00000A50: 44 0D 2E 53 4B 49 20 35 0D 45 52 52 4F 52 31 20 |D..SKI 5.ERROR1 | 00000A60: 4C 44 58 20 23 43 4D 50 45 52 52 2D 4D 53 47 53 |LDX #CMPERR-MSGS| 00000A70: 0D 2E 42 59 54 20 24 32 43 0D 45 52 52 4F 52 32 |..BYT $2C.ERROR2| 00000A80: 20 4C 44 58 20 23 43 48 4B 45 52 52 2D 4D 53 47 | LDX #CHKERR-MSG| 00000A90: 53 0D 2E 42 59 54 20 24 32 43 0D 45 52 52 4F 52 |S..BYT $2C.ERROR| 00000AA0: 33 20 4C 44 58 20 23 42 52 4B 4D 53 47 2D 4D 53 |3 LDX #BRKMSG-MS| 00000AB0: 47 53 0D 2E 42 59 54 20 24 32 43 0D 45 52 52 4F |GS..BYT $2C.ERRO| 00000AC0: 52 34 20 4C 44 58 20 23 52 45 43 45 52 52 2D 4D |R4 LDX #RECERR-M| 00000AD0: 53 47 53 0D 4A 53 52 20 4D 53 47 0D 2E 53 4B 49 |SGS.JSR MSG..SKI| 00000AE0: 0D 44 4F 4E 45 20 4C 44 41 20 23 37 0D 4A 53 52 |.DONE LDA #7.JSR| 00000AF0: 20 46 43 4C 4F 53 45 0D 4A 53 52 20 43 4C 52 43 | FCLOSE.JSR CLRC| 00000B00: 48 4E 0D 4C 44 58 20 23 44 4E 4D 53 47 2D 4D 53 |HN.LDX #DNMSG-MS| 00000B10: 47 53 0D 4A 53 52 20 4D 53 47 0D 4A 4D 50 20 52 |GS.JSR MSG.JMP R| 00000B20: 45 41 44 59 0D 2E 53 4B 49 20 35 0D 4D 53 47 20 |EADY..SKI 5.MSG | 00000B30: 53 54 58 20 49 4E 44 45 58 0D 4D 53 31 30 20 4C |STX INDEX.MS10 L| 00000B40: 44 58 20 49 4E 44 45 58 0D 4C 44 41 20 4D 53 47 |DX INDEX.LDA MSG| 00000B50: 53 2C 58 0D 50 48 50 0D 41 4E 44 20 23 24 37 46 |S,X.PHP.AND #$7F| 00000B60: 0D 4A 53 52 20 50 52 54 0D 49 4E 43 20 49 4E 44 |.JSR PRT.INC IND| 00000B70: 45 58 0D 50 4C 50 0D 42 50 4C 20 4D 53 31 30 0D |EX.PLP.BPL MS10.| 00000B80: 52 54 53 0D 2E 53 4B 49 0D 4D 53 47 53 0D 52 45 |RTS..SKI.MSGS.RE| 00000B90: 43 45 52 52 20 2E 42 59 54 20 24 44 2C 27 42 41 |CERR .BYT $D,'BA| 00000BA0: 44 20 52 45 43 4F 52 44 20 43 4F 55 4E 27 2C 24 |D RECORD COUN',$| 00000BB0: 44 34 0D 42 52 4B 4D 53 47 20 2E 42 59 54 20 24 |D4.BRKMSG .BYT $| 00000BC0: 44 2C 27 42 52 45 41 4B 27 2C 24 38 44 0D 44 4E |D,'BREAK',$8D.DN| 00000BD0: 4D 53 47 20 2E 42 59 54 20 24 44 2C 27 45 4E 44 |MSG .BYT $D,'END| 00000BE0: 20 4F 46 20 4C 4F 41 27 2C 24 43 34 0D 43 4D 50 | OF LOA',$C4.CMP| 00000BF0: 45 52 52 20 2E 42 59 54 20 24 44 2C 27 4E 4F 4E |ERR .BYT $D,'NON| 00000C00: 2D 52 41 4D 20 4C 4F 41 27 2C 24 43 34 0D 43 48 |-RAM LOA',$C4.CH| 00000C10: 4B 45 52 52 20 2E 42 59 54 20 24 44 2C 27 43 48 |KERR .BYT $D,'CH| 00000C20: 45 43 4B 53 55 4D 20 45 52 52 4F 27 2C 24 44 32 |ECKSUM ERRO',$D2| 00000C30: 0D 4F 42 4A 4D 53 47 20 2E 42 59 54 20 24 44 2C |.OBJMSG .BYT $D,| 00000C40: 27 4F 42 4A 45 43 54 20 46 49 4C 45 3F 27 2C 24 |'OBJECT FILE?',$| 00000C50: 41 30 0D 2E 53 4B 49 20 35 0D 47 45 54 42 59 54 |A0..SKI 5.GETBYT| 00000C60: 20 4A 53 52 20 47 45 54 43 48 52 0D 4A 53 52 20 | JSR GETCHR.JSR | 00000C70: 48 45 58 49 54 0D 41 53 4C 20 41 0D 41 53 4C 20 |HEXIT.ASL A.ASL | 00000C80: 41 0D 41 53 4C 20 41 0D 41 53 4C 20 41 0D 53 54 |A.ASL A.ASL A.ST| 00000C90: 41 20 44 41 54 41 0D 4A 53 52 20 47 45 54 43 48 |A DATA.JSR GETCH| 00000CA0: 52 0D 4A 53 52 20 48 45 58 49 54 0D 4F 52 41 20 |R.JSR HEXIT.ORA | 00000CB0: 44 41 54 41 0D 52 54 53 0D 2E 53 4B 49 20 35 0D |DATA.RTS..SKI 5.| 00000CC0: 48 45 58 49 54 20 43 4D 50 20 23 27 3A 20 3B 4E |HEXIT CMP #': ;N| 00000CD0: 55 4D 45 52 49 43 3F 0D 50 48 50 0D 41 4E 44 20 |UMERIC?.PHP.AND | 00000CE0: 23 24 30 46 0D 50 4C 50 0D 42 43 43 20 48 45 58 |#$0F.PLP.BCC HEX| 00000CF0: 4F 55 54 20 3B 30 2D 39 0D 41 44 43 20 23 38 20 |OUT ;0-9.ADC #8 | 00000D00: 3B 41 4C 50 48 41 20 41 44 44 20 38 2B 43 59 3D |;ALPHA ADD 8+CY=| 00000D10: 39 0D 48 45 58 4F 55 54 20 52 54 53 0D 2E 53 4B |9.HEXOUT RTS..SK| 00000D20: 49 20 35 0D 47 45 54 43 48 52 20 4C 44 41 20 43 |I 5.GETCHR LDA C| 00000D30: 48 41 4E 0D 43 4D 50 20 23 37 0D 42 45 51 20 47 |HAN.CMP #7.BEQ G| 00000D40: 45 54 31 30 0D 4A 53 52 20 43 4C 52 43 48 4E 0D |ET10.JSR CLRCHN.| 00000D50: 4C 44 58 20 23 37 0D 53 54 58 20 43 48 41 4E 0D |LDX #7.STX CHAN.| 00000D60: 4A 53 52 20 43 48 4B 49 4E 0D 47 45 54 31 30 20 |JSR CHKIN.GET10 | 00000D70: 4A 53 52 20 42 41 53 49 4E 0D 50 48 41 0D 4A 53 |JSR BASIN.PHA.JS| 00000D80: 52 20 50 52 54 0D 50 4C 41 0D 52 54 53 0D 2E 53 |R PRT.PLA.RTS..S| 00000D90: 4B 49 20 35 0D 41 44 44 43 48 4B 20 43 4C 43 0D |KI 5.ADDCHK CLC.| 00000DA0: 41 44 43 20 43 48 4B 53 55 4D 0D 53 54 41 20 43 |ADC CHKSUM.STA C| 00000DB0: 48 4B 53 55 4D 0D 42 43 43 20 41 44 44 31 30 0D |HKSUM.BCC ADD10.| 00000DC0: 49 4E 43 20 43 48 4B 53 55 4D 2B 31 0D 41 44 44 |INC CHKSUM+1.ADD| 00000DD0: 31 30 20 52 54 53 0D 2E 45 4E 44 0D 20 |10 RTS..END. |
;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'.;LINE OF BASI C TEXT TO ALLOW.; USER TO TYPE 'RUN'.* = $400..BYT 0,13,4,10,0,158 ;10 SYS..BYT ' (1039)',0,0,0..SKI 5.LOAD LDA #0.STA CHA N.STA OBJLEN.STA RECCNT.STA RECCNT+1.LDX #OBJMSG-MSGS.JSR MSG.LDX #40.STX INDEX. LD10 DEC INDEX.BEQ LOAD.JSR BASIN.CMP #$ 20.BEQ LD10.CMP #$D.BEQ LOAD.LDX #0.STX OBJLEN.BEQ LD30.LD20 JSR BASIN.CMP #$20. BEQ LD40.LD30 CMP #$D.BEQ LD40.LDX OBJLE N.CPX #14.BEQ LOAD.STA OBJFIL,X.INX.STX OBJLEN.JMP LD20.LD40 LDA #',.STA OBJFIL, X.INX.LDA #'S.STA OBJFIL,X.INX.STX OBJLE N.LDA #$D.JSR PRT.;INIT DISK.LDA #7.STA LA.LDA #2.STA FNLEN.LDA #8.STA FA.LDA #1 5.STA SA.LDA #'I.STA CHKSUM.LDA #'0.STA CHKSUM+1.LDA #>CHKSUM.STA FNADR+1.LDA #< CHKSUM.STA FNADR.JSR FOPEN.LDA #7.JSR FC LOSE.LDA #'1.STA CHKSUM+1.JSR FOPEN.LDA #7.JSR FCLOSE.;OPEN OBJECT FILE.LDA #7.S TA SA.LDA #>OBJFIL.STA FNADR+1.LDA #<OBJ FIL.STA FNADR.LDA OBJLEN.STA FNLEN.JSR F OPEN.;BEGIN LOAF.LH1 JSR STOP1 ;STOP KEY ?.BEQ ERROR3 ;YES...BREAK.JSR GETCHR.CMP #'; ;RECORD INITIATOR?.BNE LH1 ;NO...KE EP LOOKING..SKI.LDA #0.STA CHKSUM.STA CH KSUM+1.STA INDEX.JSR GETBYT ;READ BYTE C OUNT.BNE LH2 ;NOT LAST RECORD.;CHECK END RECORD COUNT.JSR GETBYT.CMP RECCNT+1.BN E ERROR4.JSR GETBYT.CMP RECCNT.BNE ERROR 4.BEQ DONE..SKI.LH2 STA BYTCNT.INC RECCN T.BNE LH1B.INC RECCNT+1.LH1B JSR ADDCHK ;LENGHT TO CHECKSUM.JSR GETBYT.STA LDADD R+1 ;START ADDRESS HI.JSR ADDCHK.JSR GET BYT.STA LDADDR ;START ADDRESS LO.JSR ADD CHK..SKI.LH3 JSR GETBYT.LDY INDEX.INC IN DEX.STA (LDADDR)Y.CMP (LDADDR)Y ;GOOD ST ORE?.BNE ERROR1 ;NO....JSR ADDCHK.DEC BY TCNT ;LAST BYTE?.BNE LH3 ;NO.....SKI.JSR GETBYT ;TEST CHECKSUM HI.CMP CHKSUM+1.B NE ERROR2 ;CHECKSUM ERROR.JSR GETBYT ;GE T CHECKSUM LO.CMP CHKSUM.BNE ERROR2 ;CHE CKSUM ERROR.BEQ LH1 ;CONTINUE NEXT RECOR D..SKI 5.ERROR1 LDX #CMPERR-MSGS..BYT $2 C.ERROR2 LDX #CHKERR-MSGS..BYT $2C.ERROR 3 LDX #BRKMSG-MSGS..BYT $2C.ERROR4 LDX # RECERR-MSGS.JSR MSG..SKI.DONE LDA #7.JSR FCLOSE.JSR CLRCHN.LDX #DNMSG-MSGS.JSR M SG.JMP READY..SKI 5.MSG STX INDEX.MS10 L DX INDEX.LDA MSGS,X.PHP.AND #$7F.JSR PRT .INC INDEX.PLP.BPL MS10.RTS..SKI.MSGS.RE CERR .BYT $D,'BAD RECORD COUN',$D4.BRKMS G .BYT $D,'BREAK',$8D.DNMSG .BYT $D,'END OF LOA',$C4.CMPERR .BYT $D,'NON-RAM LOA ',$C4.CHKERR .BYT $D,'CHECKSUM ERRO',$D2 .OBJMSG .BYT $D,'OBJECT FILE?',$A0..SKI 5.GETBYT JSR GETCHR.JSR HEXIT.ASL A.ASL A.ASL A.ASL A.STA DATA.JSR GETCHR.JSR HE XIT.ORA DATA.RTS..SKI 5.HEXIT CMP #': ;N UMERIC?.PHP.AND #$0F.PLP.BCC HEXOUT ;0-9 .ADC #8 ;ALPHA ADD 8+CY=9.HEXOUT RTS..SK I 5.GETCHR LDA CHAN.CMP #7.BEQ GET10.JSR CLRCHN.LDX #7.STX CHAN.JSR CHKIN.GET10 JSR BASIN.PHA.JSR PRT.PLA.RTS..SKI 5.ADD CHK CLC.ADC CHKSUM.STA CHKSUM.BCC ADD10. INC CHKSUM+1.ADD10 RTS..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL