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

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 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL