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

M£L.3 PETLIB

FILE INFORMATION

FILENAME(S): M£L.3 PETLIB

FILE TYPE(S): PRG

FILE SIZE: 3.7K

FIRST SEEN: 2025-11-30 21:07:04

APPEARS ON: 1 disk(s)

FILE HASH

4853d179fe316868b6363857255eed7934eafbdbb488617d8213111edc9189d7

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
PET UTILITY 09 M£L.3 PETLIB PRG DuncanTwain 28 5 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: AA 00 30 9F 3E 00 00 10  3B 20 20 20 20 2A 2A 2A  |..0.>...;    ***|
00000010: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000020: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000030: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000040: 2A 2A 2A AA 10 10 3B 20  20 20 20 2A 2A 20 20 20  |***...;    **   |
00000050: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000060: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000070: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000080: 2A AA 20 10 3B 20 20 20  20 2A 2A 20 20 20 20 20  |*. .;    **     |
00000090: 20 20 20 20 20 20 20 20  20 20 50 45 54 20 33 2E  |          PET 3.|
000000A0: 30 20 4C 49 42 52 41 52  59 20 46 49 4C 45 20 20  |0 LIBRARY FILE  |
000000B0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 2A AA  |              *.|
000000C0: 30 10 3B 20 20 20 20 2A  2A 20 20 20 20 20 20 20  |0.;    **       |
000000D0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000000E0: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000000F0: 20 20 20 20 20 20 20 20  20 20 20 20 2A AA 40 10  |            *.@.|
00000100: 3B 20 20 20 20 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |;    ***********|
00000110: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000120: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000130: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A AA 50 10 89 60  |***********.P..`|
00000140: 10 89 70 10 89 80 10 3B  20 20 20 20 20 20 20 20  |..p....;        |
00000150: 43 4F 4E 54 41 49 4E 45  44 20 49 4E 20 54 48 49  |CONTAINED IN THI|
00000160: 53 20 46 49 4C 45 20 49  53 20 53 4F 4D 45 20 50  |S FILE IS SOME P|
00000170: 45 54 20 52 4F 4D 20 4C  4F 43 41 54 49 4F 4E D3  |ET ROM LOCATION.|
00000180: 90 10 3B 20 20 20 20 20  20 20 20 57 48 49 43 48  |..;        WHICH|
00000190: 20 4D 41 59 20 42 45 20  4F 46 20 49 4E 54 45 52  | MAY BE OF INTER|
000001A0: 45 53 54 20 54 4F 20 54  48 4F 53 45 20 4F 46 20  |EST TO THOSE OF |
000001B0: 59 4F 55 20 57 48 4F 20  41 52 C5 00 11 3B 20 20  |YOU WHO AR...;  |
000001C0: 20 20 20 20 20 20 44 45  56 45 4C 4F 50 49 4E 47  |      DEVELOPING|
000001D0: 20 50 52 4F 47 52 41 4D  53 20 57 48 49 43 48 20  | PROGRAMS WHICH |
000001E0: 49 4E 54 45 52 46 41 43  45 20 57 49 54 48 20 54  |INTERFACE WITH T|
000001F0: 48 45 20 50 45 D4 10 11  89 20 11 89 30 11 89 40  |HE PE.... ..0..@|
00000200: 11 89 50 11 3B 20 47 45  4E 45 52 41 4C 20 53 55  |..P.; GENERAL SU|
00000210: 42 52 4F 55 54 49 4E 45  53 BA 60 11 3B 20 2D 2D  |BROUTINES.`.; --|
00000220: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |----------------|
00000230: 2D AD 70 11 89 80 11 40  57 52 54 20 2E 44 45 20  |-.p....@WRT .DE |
00000240: 24 46 46 44 32 20 3B 57  52 49 54 45 20 41 53 43  |$FFD2 ;WRITE ASC|
00000250: 49 49 20 43 48 41 52 2E  20 49 4E 20 52 28 41 29  |II CHAR. IN R(A)|
00000260: 20 54 4F 20 53 43 52 45  45 CE 90 11 40 52 44 54  | TO SCREE...@RDT|
00000270: 20 2E 44 45 20 24 46 46  43 46 20 3B 52 45 41 44  | .DE $FFCF ;READ|
00000280: 20 41 53 43 49 49 20 43  48 41 52 2E 20 46 52 4F  | ASCII CHAR. FRO|
00000290: 4D 20 4B 45 59 42 4F 41  52 44 20 54 4F 20 52 28  |M KEYBOARD TO R(|
000002A0: 41 A9 00 12 40 47 45 54  20 2E 44 45 20 24 46 46  |A...@GET .DE $FF|
000002B0: 45 34 20 3B 47 45 54 20  43 48 41 52 2E 20 49 46  |E4 ;GET CHAR. IF|
000002C0: 20 41 4E 59 2C 20 45 4C  53 45 20 52 28 41 29 3D  | ANY, ELSE R(A)=|
000002D0: 30 B0 10 12 40 43 52 4C  46 20 2E 44 45 20 24 46  |0...@CRLF .DE $F|
000002E0: 44 43 44 20 3B 57 52 49  54 45 20 41 20 43 52 20  |DCD ;WRITE A CR |
000002F0: 4C C6 20 12 40 53 50 41  43 45 32 20 2E 44 45 20  |L. .@SPACE2 .DE |
00000300: 24 46 44 43 41 20 3B 57  52 49 54 45 20 32 20 53  |$FDCA ;WRITE 2 S|
00000310: 50 41 43 45 D3 30 12 40  53 50 41 43 45 20 2E 44  |PACE.0.@SPACE .D|
00000320: 45 20 24 46 44 43 44 20  3B 57 52 49 54 45 20 31  |E $FDCD ;WRITE 1|
00000330: 20 53 50 41 43 C5 40 12  40 57 52 4F 42 20 2E 44  | SPAC.@.@WROB .D|
00000340: 45 20 24 45 37 37 35 20  3B 57 52 49 54 45 20 54  |E $E775 ;WRITE T|
00000350: 57 4F 20 44 49 47 49 54  53 20 52 45 50 52 45 53  |WO DIGITS REPRES|
00000360: 45 4E 54 49 4E 47 20 43  4F 4E 54 45 4E 54 53 20  |ENTING CONTENTS |
00000370: 4F 46 20 52 28 41 A9 50  12 40 52 44 4F 42 20 2E  |OF R(A.P.@RDOB .|
00000380: 44 45 20 24 45 37 42 36  20 3B 52 45 41 44 20 54  |DE $E7B6 ;READ T|
00000390: 57 4F 20 44 49 47 49 54  53 20 41 4E 44 20 50 41  |WO DIGITS AND PA|
000003A0: 43 4B 20 49 4E 54 4F 20  52 28 41 A9 60 12 40 48  |CK INTO R(A.`.@H|
000003B0: 45 58 49 54 20 2E 44 45  20 24 45 37 45 30 20 3B  |EXIT .DE $E7E0 ;|
000003C0: 43 4F 4E 56 45 52 54 20  52 28 41 29 20 54 4F 20  |CONVERT R(A) TO |
000003D0: 48 45 D8 70 12 40 43 4C  52 53 43 52 4E 20 2E 44  |HE.p.@CLRSCRN .D|
000003E0: 45 20 24 45 32 32 39 20  3B 43 4C 45 41 52 20 53  |E $E229 ;CLEAR S|
000003F0: 43 52 45 45 CE 80 12 40  53 43 52 4F 4C 4C 20 2E  |CREE...@SCROLL .|
00000400: 44 45 20 24 45 35 33 46  20 3B 53 43 52 4F 4C 4C  |DE $E53F ;SCROLL|
00000410: 20 53 43 52 45 45 CE 90  12 40 42 41 53 49 43 2E  | SCREE...@BASIC.|
00000420: 57 52 4D 20 2E 44 45 20  24 43 33 38 39 20 3B 42  |WRM .DE $C389 ;B|
00000430: 41 53 49 43 20 57 41 52  4D 20 53 54 41 52 54 20  |ASIC WARM START |
00000440: 28 55 53 45 20 4A 4D 50  A9 00 13 40 54 53 54 2E  |(USE JMP...@TST.|
00000450: 53 54 4F 50 42 20 2E 44  45 20 24 46 46 45 31 20  |STOPB .DE $FFE1 |
00000460: 3B 54 45 53 54 20 53 54  4F 50 20 4B 45 59 20 41  |;TEST STOP KEY A|
00000470: 4E 44 20 47 4F 20 54 4F  20 42 41 53 49 43 20 49  |ND GO TO BASIC I|
00000480: 46 20 44 4F 57 CE 10 13  40 54 53 54 2E 53 54 4F  |F DOW...@TST.STO|
00000490: 50 52 20 2E 44 45 20 24  46 33 30 31 20 3B 54 45  |PR .DE $F301 ;TE|
000004A0: 53 54 20 53 54 4F 50 20  4B 45 59 20 2D 20 45 4E  |ST STOP KEY - EN|
000004B0: 41 42 4C 45 44 20 49 46  20 5A 3D C6 20 13 89 30  |ABLED IF Z=. ..0|
000004C0: 13 89 40 13 89 50 13 3B  20 49 45 45 45 20 53 55  |..@..P.; IEEE SU|
000004D0: 42 52 4F 55 54 49 4E 45  53 3A A0 60 13 3B 20 2D  |BROUTINES:.`.; -|
000004E0: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D AD  |---------------.|
000004F0: 70 13 89 80 13 40 4F 50  45 4E 20 2E 44 45 20 24  |p....@OPEN .DE $|
00000500: 46 34 36 36 20 3B 4F 50  45 4E 20 49 45 45 45 20  |F466 ;OPEN IEEE |
00000510: 43 48 41 4E 4E 45 CC 90  13 40 53 45 4E 44 53 45  |CHANNE...@SENDSE|
00000520: 43 20 2E 44 45 20 24 46  31 32 38 20 3B 53 45 4E  |C .DE $F128 ;SEN|
00000530: 44 20 49 45 45 45 20 53  45 43 4F 4E 44 41 52 59  |D IEEE SECONDARY|
00000540: 20 41 44 44 52 53 20 49  4E 20 52 28 41 A9 00 14  | ADDRS IN R(A...|
00000550: 40 43 4C 4F 53 45 20 2E  44 45 20 24 46 36 46 30  |@CLOSE .DE $F6F0|
00000560: 20 3B 43 4C 4F 53 45 20  49 45 45 45 20 43 48 41  | ;CLOSE IEEE CHA|
00000570: 4E 4E 45 CC 10 14 40 4C  49 53 54 45 4E 20 2E 44  |NNE...@LISTEN .D|
00000580: 45 20 24 46 30 42 41 20  3B 43 4F 4D 4D 41 4E 44  |E $F0BA ;COMMAND|
00000590: 20 49 45 45 45 20 44 45  56 49 43 45 20 54 4F 20  | IEEE DEVICE TO |
000005A0: 4C 49 53 54 45 CE 20 14  40 54 41 4C 4B 20 2E 44  |LISTE. .@TALK .D|
000005B0: 45 20 24 46 30 42 36 20  3B 43 4F 4D 4D 41 4E 44  |E $F0B6 ;COMMAND|
000005C0: 20 44 45 56 49 43 45 20  54 4F 20 54 41 4C CB 30  | DEVICE TO TAL.0|
000005D0: 14 40 55 4E 4C 49 53 54  45 4E 20 2E 44 45 20 24  |.@UNLISTEN .DE $|
000005E0: 46 31 38 33 20 3B 43 4F  4D 4D 41 4E 44 20 44 45  |F183 ;COMMAND DE|
000005F0: 56 49 43 45 20 54 4F 20  4E 4F 54 20 4C 49 53 54  |VICE TO NOT LIST|
00000600: 45 CE 40 14 40 55 4E 54  41 4C 4B 20 2E 44 45 20  |E.@.@UNTALK .DE |
00000610: 24 46 31 37 46 20 3B 43  4F 4D 4D 41 4E 44 20 44  |$F17F ;COMMAND D|
00000620: 45 56 49 43 45 20 54 4F  20 4E 4F 54 20 54 41 4C  |EVICE TO NOT TAL|
00000630: CB 50 14 89 60 14 40 49  45 45 45 50 55 54 20 2E  |.P..`.@IEEEPUT .|
00000640: 44 45 20 24 46 31 36 46  20 3B 4F 55 54 50 55 54  |DE $F16F ;OUTPUT|
00000650: 20 52 28 41 29 20 54 4F  20 49 45 45 C5 70 14 40  | R(A) TO IEE.p.@|
00000660: 49 45 45 45 47 45 54 20  2E 44 45 20 24 46 31 38  |IEEEGET .DE $F18|
00000670: 43 20 3B 49 4E 50 55 54  20 46 52 4F 4D 20 49 45  |C ;INPUT FROM IE|
00000680: 45 45 20 54 4F 20 52 28  41 A9 80 14 40 49 45 45  |EE TO R(A...@IEE|
00000690: 45 42 55 46 20 2E 44 45  20 24 46 30 45 45 20 3B  |EBUF .DE $F0EE ;|
000006A0: 49 45 45 45 20 4F 55 50  55 54 20 42 55 46 46 45  |IEEE OUPUT BUFFE|
000006B0: 52 45 44 20 56 49 41 20  43 48 41 52 2E 20 49 4E  |RED VIA CHAR. IN|
000006C0: 20 40 42 55 46 46 43 48  D2 90 14 89 00 15 40 52  | @BUFFCH......@R|
000006D0: 45 4C 53 41 54 54 4E 20  2E 44 45 20 24 46 31 32  |ELSATTN .DE $F12|
000006E0: 44 20 3B 52 45 4C 45 41  53 45 20 49 45 45 45 20  |D ;RELEASE IEEE |
000006F0: 41 54 54 45 4E 54 49 4F  CE 10 15 89 20 15 89 30  |ATTENTIO.... ..0|
00000700: 15 89 40 15 3B 20 4F 50  45 52 41 54 49 4E 47 20  |..@.; OPERATING |
00000710: 53 59 53 54 45 4D 20 56  41 52 49 41 42 4C 45 D3  |SYSTEM VARIABLE.|
00000720: 50 15 3B 20 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |P.; ------------|
00000730: 2D 2D 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D AD 60  |--------------.`|
00000740: 15 89 70 15 3B 20 20 20  20 20 4E 4F 54 45 3A 20  |..p.;     NOTE: |
00000750: 54 48 45 20 4F 2E 53 2E  20 55 53 45 53 20 24 30  |THE O.S. USES $0|
00000760: 30 39 30 2D 24 30 30 46  46 2C 20 42 41 53 49 43  |090-$00FF, BASIC|
00000770: 20 41 4C 4C AE 80 15 89  90 15 40 46 41 20 2E 44  | ALL......@FA .D|
00000780: 45 20 24 44 34 20 3B 49  45 45 45 20 46 49 52 53  |E $D4 ;IEEE FIRS|
00000790: 54 20 41 44 44 52 45 53  53 20 28 44 45 56 49 43  |T ADDRESS (DEVIC|
000007A0: 45 A9 00 16 40 53 41 20  2E 44 45 20 24 44 33 20  |E...@SA .DE $D3 |
000007B0: 3B 49 45 45 45 20 53 45  43 4F 4E 44 41 52 59 20  |;IEEE SECONDARY |
000007C0: 41 44 44 52 45 53 53 20  28 43 48 41 4E 4E 45 4C  |ADDRESS (CHANNEL|
000007D0: A9 10 16 40 53 54 41 54  55 53 20 2E 44 45 20 24  |...@STATUS .DE $|
000007E0: 39 36 20 3B 53 54 41 54  55 45 20 42 59 54 C5 20  |96 ;STATUE BYT. |
000007F0: 16 20 3B 30 31 3D 20 20  20 20 20 20 20 20 20 20  |. ;01=          |
00000800: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000810: 20 20 20 20 20 20 30 38  3D 20 4C 4F 4E 47 20 42  |      08= LONG B|
00000820: 4C 4F 43 4B 20 45 52 52  4F D2 30 16 20 3B 30 32  |LOCK ERRO.0. ;02|
00000830: 3D 20 54 49 4D 45 4F 55  54 20 20 20 20 20 20 20  |= TIMEOUT       |
00000840: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000850: 20 31 30 3D A0 40 16 20  3B 30 34 3D 20 53 48 4F  | 10=.@. ;04= SHO|
00000860: 52 54 20 42 4C 4F 43 4B  20 45 52 52 4F 52 20 20  |RT BLOCK ERROR  |
00000870: 20 20 20 20 20 20 20 20  20 20 20 20 34 30 3D 20  |            40= |
00000880: 45 4F C9 50 16 89 60 16  40 46 4E 4C 45 4E 20 2E  |EO.P..`.@FNLEN .|
00000890: 44 45 20 24 44 31 20 3B  46 49 4C 45 20 4E 41 4D  |DE $D1 ;FILE NAM|
000008A0: 45 20 4C 45 4E 47 54 C8  70 16 40 46 4E 41 44 52  |E LENGT.p.@FNADR|
000008B0: 20 2E 44 45 20 24 44 41  20 3B 46 49 4C 45 20 4E  | .DE $DA ;FILE N|
000008C0: 41 4D 45 20 41 44 44 52  45 53 D3 80 16 40 53 41  |AME ADDRES...@SA|
000008D0: 4C 20 2E 44 45 20 24 43  37 20 3B 49 45 45 45 20  |L .DE $C7 ;IEEE |
000008E0: 53 54 41 52 54 20 41 44  44 52 45 53 D3 90 16 40  |START ADDRES...@|
000008F0: 45 41 4C 20 2E 44 45 20  24 43 39 20 3B 49 45 45  |EAL .DE $C9 ;IEE|
00000900: 45 20 45 4E 44 20 41 44  44 52 45 53 D3 00 17 89  |E END ADDRES....|
00000910: 10 17 40 42 55 46 46 43  48 52 20 2E 44 45 20 24  |..@BUFFCHR .DE $|
00000920: 41 35 20 3B 42 55 46 46  45 52 20 46 4F 52 20 49  |A5 ;BUFFER FOR I|
00000930: 45 45 45 20 4F 55 54 50  55 D4 20 17 40 46 41 54  |EEE OUTPU. .@FAT|
00000940: 20 2E 44 45 20 24 30 32  35 42 20 3B 53 41 56 45  | .DE $025B ;SAVE|
00000950: 20 4C 4F 43 2E 20 46 4F  52 20 46 C1 30 17 40 54  | LOC. FOR F.0.@T|
00000960: 42 55 46 31 20 2E 44 45  20 24 30 32 37 41 20 3B  |BUF1 .DE $027A ;|
00000970: 54 41 50 45 20 42 55 46  46 45 52 20 23 B1 40 17  |TAPE BUFFER #.@.|
00000980: 40 54 42 55 46 32 20 2E  44 45 20 24 30 33 33 41  |@TBUF2 .DE $033A|
00000990: 20 3B 54 41 50 45 20 42  55 46 46 45 52 20 23 B2  | ;TAPE BUFFER #.|
000009A0: 50 17 89 60 17 89 70 17  89 80 17 3B 20 53 43 52  |P..`..p....; SCR|
000009B0: 45 45 4E 20 56 41 52 49  41 42 4C 45 53 BA 90 17  |EEN VARIABLES...|
000009C0: 3B 20 2D 2D 2D 2D 2D 2D  2D 2D 2D 2D 2D 2D 2D 2D  |; --------------|
000009D0: 2D 2D AD 00 18 89 10 18  40 4E 44 58 20 2E 44 45  |--......@NDX .DE|
000009E0: 20 24 39 45 20 3B 23 20  4F 46 20 43 48 41 52 2E  | $9E ;# OF CHAR.|
000009F0: 20 49 4E 20 4B 45 59 42  4F 41 52 44 20 49 4E 50  | IN KEYBOARD INP|
00000A00: 55 54 20 42 55 46 46 45  D2 20 18 40 4B 45 59 44  |UT BUFFE. .@KEYD|
00000A10: 20 2E 44 45 20 24 30 32  36 46 20 3B 4B 45 59 42  | .DE $026F ;KEYB|
00000A20: 4F 41 52 44 20 49 4E 50  55 54 20 42 55 46 46 45  |OARD INPUT BUFFE|
00000A30: D2 30 18 40 43 48 52 2F  4C 49 4E 45 20 2E 44 45  |.0.@CHR/LINE .DE|
00000A40: 20 24 44 35 20 3B 43 55  52 52 45 4E 54 20 4C 49  | $D5 ;CURRENT LI|
00000A50: 4E 45 20 4C 45 4E 47 54  48 20 34 30 20 3D 24 33  |NE LENGTH 40 =$3|
00000A60: 37 2C 20 38 30 20 3D 24  34 C6 40 18 40 4B 45 59  |7, 80 =$4.@.@KEY|
00000A70: 43 48 52 20 2E 44 45 20  24 39 37 20 3B 4B 45 59  |CHR .DE $97 ;KEY|
00000A80: 20 44 45 50 52 45 53 53  45 44 2C 20 3D 24 46 46  | DEPRESSED, =$FF|
00000A90: 20 49 46 20 4E 4F 20 4B  45 D9 50 18 89 60 18 89  | IF NO KE.P..`..|
00000AA0: 70 18 89 80 18 3B 20 56  45 43 54 4F 52 53 BA 90  |p....; VECTORS..|
00000AB0: 18 3B 20 2D 2D 2D 2D 2D  2D 2D AD 00 19 89 10 19  |.; -------......|
00000AC0: 40 49 52 51 56 45 43 20  2E 44 45 20 24 39 30 20  |@IRQVEC .DE $90 |
00000AD0: 3B 49 52 51 20 56 45 43  54 4F D2 20 19 40 42 52  |;IRQ VECTO. .@BR|
00000AE0: 4B 56 45 43 20 2E 44 45  20 24 39 32 20 3B 42 52  |KVEC .DE $92 ;BR|
00000AF0: 45 41 4B 20 56 45 43 54  4F D2 30 19 40 4E 4D 49  |EAK VECTO.0.@NMI|
00000B00: 56 45 43 20 2E 44 45 20  24 39 34 20 3B 4E 4D 49  |VEC .DE $94 ;NMI|
00000B10: 20 56 45 43 54 4F D2 40  19 89 50 19 89 60 19 89  | VECTO.@..P..`..|
00000B20: 70 19 89 80 19 3B 20 50  45 54 20 49 2F 4F BA 90  |p....; PET I/O..|
00000B30: 19 3B 20 2D 2D 2D 2D 2D  2D 2D AD 00 20 89 10 20  |.; -------.. .. |
00000B40: 3B 36 35 32 30 20 28 43  48 49 50 20 43 37 29 20  |;6520 (CHIP C7) |
00000B50: 3D 20 24 45 38 31 78 20  3D 20 4B 45 59 42 4F 41  |= $E81x = KEYBOA|
00000B60: 52 44 20 53 43 41 CE 20  20 89 30 20 40 44 52 41  |RD SCA.  .0 @DRA|
00000B70: 2F 44 44 52 41 20 2E 44  45 20 24 45 38 31 B0 40  |/DDRA .DE $E81.@|
00000B80: 20 40 43 52 41 20 2E 44  45 20 24 45 38 31 B1 50  | @CRA .DE $E81.P|
00000B90: 20 40 44 52 42 2F 44 44  52 42 20 2E 44 45 20 24  | @DRB/DDRB .DE $|
00000BA0: 45 38 31 B2 60 20 40 43  52 42 20 2E 44 45 20 24  |E81.` @CRB .DE $|
00000BB0: 45 38 31 B3 70 20 89 80  20 89 90 20 3B 36 35 32  |E81.p .. .. ;652|
00000BC0: 30 20 28 43 48 49 50 20  43 36 29 20 3D 20 45 38  |0 (CHIP C6) = E8|
00000BD0: 32 78 20 3D 20 49 45 45  45 20 34 38 38 20 49 4E  |2x = IEEE 488 IN|
00000BE0: 54 45 52 46 41 43 C5 00  21 89 10 21 89 20 21 89  |TERFAC..!..!. !.|
00000BF0: 30 21 89 40 21 89 50 21  3B 36 35 32 32 20 28 43  |0!.@!.P!;6522 (C|
00000C00: 48 49 50 20 43 35 29 20  3D 20 45 38 34 78 20 3D  |HIP C5) = E84x =|
00000C10: 20 55 53 45 52 20 50 4F  52 D4 60 21 89 70 21 40  | USER POR.`!.p!@|
00000C20: 44 52 42 20 2E 44 45 20  24 45 38 34 30 20 3B 44  |DRB .DE $E840 ;D|
00000C30: 41 54 41 20 52 45 47 2E  20 C2 80 21 40 44 52 41  |ATA REG. ..!@DRA|
00000C40: 20 2E 44 45 20 24 45 38  34 31 20 3B 44 41 54 41  | .DE $E841 ;DATA|
00000C50: 20 52 45 47 2E 20 41 20  57 49 54 48 20 48 41 4E  | REG. A WITH HAN|
00000C60: 44 53 48 41 4B C5 90 21  40 44 44 52 42 20 2E 44  |DSHAK..!@DDRB .D|
00000C70: 45 20 24 45 38 34 32 20  3B 44 49 52 45 43 54 49  |E $E842 ;DIRECTI|
00000C80: 4F 4E 20 52 45 47 2E 20  C2 00 22 40 44 44 52 41  |ON REG. .."@DDRA|
00000C90: 20 2E 44 45 20 24 45 38  34 33 20 3B 44 49 52 45  | .DE $E843 ;DIRE|
00000CA0: 43 54 49 4F 4E 20 52 45  47 2E 20 C1 10 22 40 54  |CTION REG. .."@T|
00000CB0: 31 4C 5F 4C 57 4C 52 43  20 2E 44 45 20 24 45 38  |1L_LWLRC .DE $E8|
00000CC0: 34 34 20 3B 54 49 4D 4D  45 52 20 23 31 20 57 52  |44 ;TIMMER #1 WR|
00000CD0: 49 54 45 20 4C 41 54 43  48 20 52 45 41 44 20 43  |ITE LATCH READ C|
00000CE0: 4F 55 4E 54 45 D2 20 22  40 54 31 43 5F 48 20 2E  |OUNTE. "@T1C_H .|
00000CF0: 44 45 20 24 45 38 34 35  20 3B 54 49 4D 4D 45 52  |DE $E845 ;TIMMER|
00000D00: 20 23 B1 30 22 40 54 31  4C 5F 4C 20 2E 44 45 20  | #.0"@T1L_L .DE |
00000D10: 24 45 38 34 36 20 3B 20  AA 40 22 40 54 31 4C 5F  |$E846 ; .@"@T1L_|
00000D20: 48 20 2E 44 45 20 24 45  38 34 37 20 3B 20 AA 50  |H .DE $E847 ; .P|
00000D30: 22 40 54 32 4C 5F 4C 57  4C 52 43 20 2E 44 45 20  |"@T2L_LWLRC .DE |
00000D40: 24 45 38 34 38 20 3B 54  49 4D 4D 45 52 20 23 32  |$E848 ;TIMMER #2|
00000D50: 20 57 52 49 54 45 20 4C  41 54 43 48 20 52 45 41  | WRITE LATCH REA|
00000D60: 44 20 43 4F 55 4E 54 45  D2 60 22 40 54 32 43 5F  |D COUNTE.`"@T2C_|
00000D70: 4C 57 4C 52 43 20 2E 44  45 20 24 45 38 34 38 20  |LWLRC .DE $E848 |
00000D80: 3B 20 AA 70 22 40 54 32  43 5F 48 20 2E 44 45 20  |; .p"@T2C_H .DE |
00000D90: 24 45 38 34 39 20 3B 20  AA 80 22 40 53 52 20 2E  |$E849 ; .."@SR .|
00000DA0: 44 45 20 24 45 38 34 41  20 3B 53 48 49 46 54 20  |DE $E84A ;SHIFT |
00000DB0: 52 45 47 49 53 54 45 D2  90 22 40 41 43 52 20 2E  |REGISTE.."@ACR .|
00000DC0: 44 45 20 24 45 38 34 42  20 3B 41 55 58 49 4C 4C  |DE $E84B ;AUXILL|
00000DD0: 41 52 59 20 43 4F 4E 54  52 4F 4C 20 52 45 47 49  |ARY CONTROL REGI|
00000DE0: 53 54 45 D2 00 23 40 50  43 52 20 2E 44 45 20 24  |STE..#@PCR .DE $|
00000DF0: 45 38 34 43 20 3B 50 45  52 49 50 48 45 52 41 4C  |E84C ;PERIPHERAL|
00000E00: 20 43 4F 4E 54 52 4F 4C  20 52 45 47 49 53 54 45  | CONTROL REGISTE|
00000E10: D2 10 23 40 49 46 52 20  2E 44 45 20 24 45 38 34  |..#@IFR .DE $E84|
00000E20: 44 20 3B 49 4E 54 45 52  52 55 50 54 20 46 4C 41  |D ;INTERRUPT FLA|
00000E30: 47 20 52 45 47 49 53 54  45 D2 20 23 40 49 45 52  |G REGISTE. #@IER|
00000E40: 20 2E 44 45 20 24 45 38  34 45 20 3B 49 4E 54 45  | .DE $E84E ;INTE|
00000E50: 52 52 55 50 54 20 45 4E  41 42 4C 45 20 52 45 47  |RRUPT ENABLE REG|
00000E60: 49 53 54 45 D2 30 23 40  44 52 41 4E 48 20 2E 44  |ISTE.0#@DRANH .D|
00000E70: 45 20 24 45 38 34 46 20  3B 44 41 54 41 20 52 45  |E $E84F ;DATA RE|
00000E80: 47 49 53 54 45 52 20 41  20 42 55 54 20 4E 4F 20  |GISTER A BUT NO |
00000E90: 48 41 4E 44 53 48 41 4B  C5 40 23 89 50 23 89 60  |HANDSHAK.@#.P#.`|
00000EA0: 23 89 70 23 89 00                                 |#.p#..          |
..0.>...;    ***************************
***************************...;    **   
                                        
        *. .;    **               PET 3.
0 LIBRARY FILE                *.0.;    *
*                                       
            *.@.;    *******************
***********************************.P..`
..P....;        CONTAINED IN THIS FILE I
S SOME PET ROM LOCATIONS..;        WHICH
 MAY BE OF INTEREST TO THOSE OF YOU WHO 
ARE..;        DEVELOPING PROGRAMS WHICH 
INTERFACE WITH THE PET... ..0..@..P.; GE
NERAL SUBROUTINES.`.; ------------------
-.P....@WRT .DE $FFD2 ;WRITE ASCII CHAR.
 IN R(A) TO SCREEN..@RDT .DE $FFCF ;READ
 ASCII CHAR. FROM KEYBOARD TO R(A...@GET
 .DE $FFE4 ;GET CHAR. IF ANY, ELSE R(A)=
0...@CRLF .DE $FDCD ;WRITE A CR LF .@SPA
CE2 .DE $FDCA ;WRITE 2 SPACES0.@SPACE .D
E $FDCD ;WRITE 1 SPACE@.@WROB .DE $E775 
;WRITE TWO DIGITS REPRESENTING CONTENTS 
OF R(A.P.@RDOB .DE $E7B6 ;READ TWO DIGIT
S AND PACK INTO R(A.`.@HEXIT .DE $E7E0 ;
CONVERT R(A) TO HEXP.@CLRSCRN .DE $E229 
;CLEAR SCREEN..@SCROLL .DE $E53F ;SCROLL
 SCREEN..@BASIC.WRM .DE $C389 ;BASIC WAR
M START (USE JMP...@TST.STOPB .DE $FFE1 
;TEST STOP KEY AND GO TO BASIC IF DOWN..
@TST.STOPR .DE $F301 ;TEST STOP KEY - EN
ABLED IF Z=F ..0..@..P.; IEEE SUBROUTINE
S: `.; ----------------.P....@OPEN .DE $
F466 ;OPEN IEEE CHANNEL..@SENDSEC .DE $F
128 ;SEND IEEE SECONDARY ADDRS IN R(A...
@CLOSE .DE $F6F0 ;CLOSE IEEE CHANNEL..@L
ISTEN .DE $F0BA ;COMMAND IEEE DEVICE TO 
LISTEN .@TALK .DE $F0B6 ;COMMAND DEVICE 
TO TALK0.@UNLISTEN .DE $F183 ;COMMAND DE
VICE TO NOT LISTEN@.@UNTALK .DE $F17F ;C
OMMAND DEVICE TO NOT TALKP..`.@IEEEPUT .
DE $F16F ;OUTPUT R(A) TO IEEEP.@IEEEGET 
.DE $F18C ;INPUT FROM IEEE TO R(A...@IEE
EBUF .DE $F0EE ;IEEE OUPUT BUFFERED VIA 
CHAR. IN @BUFFCHR.....@RELSATTN .DE $F12
D ;RELEASE IEEE ATTENTION... ..0..@.; OP
ERATING SYSTEM VARIABLESP.; ------------
--------------.`..P.;     NOTE: THE O.S.
 USES $0090-$00FF, BASIC ALL......@FA .D
E $D4 ;IEEE FIRST ADDRESS (DEVICE...@SA 
.DE $D3 ;IEEE SECONDARY ADDRESS (CHANNEL
...@STATUS .DE $96 ;STATUE BYTE . ;01=  
                              08= LONG B
LOCK ERROR0. ;02= TIMEOUT               
         10= @. ;04= SHORT BLOCK ERROR  
            40= EOIP..`.@FNLEN .DE $D1 ;
FILE NAME LENGTHP.@FNADR .DE $DA ;FILE N
AME ADDRESS..@SAL .DE $C7 ;IEEE START AD
DRESS..@EAL .DE $C9 ;IEEE END ADDRESS...
..@BUFFCHR .DE $A5 ;BUFFER FOR IEEE OUTP
UT .@FAT .DE $025B ;SAVE LOC. FOR FA0.@T
BUF1 .DE $027A ;TAPE BUFFER #.@.@TBUF2 .
DE $033A ;TAPE BUFFER #.P..`..P....; SCR
EEN VARIABLES...; ----------------......
@NDX .DE $9E ;# OF CHAR. IN KEYBOARD INP
UT BUFFER .@KEYD .DE $026F ;KEYBOARD INP
UT BUFFER0.@CHR/LINE .DE $D5 ;CURRENT LI
NE LENGTH 40 =$37, 80 =$4F@.@KEYCHR .DE 
$97 ;KEY DEPRESSED, =$FF IF NO KEYP..`..
P....; VECTORS...; -------......@IRQVEC 
.DE $90 ;IRQ VECTOR .@BRKVEC .DE $92 ;BR
EAK VECTOR0.@NMIVEC .DE $94 ;NMI VECTOR@
..P..`..P....; PET I/O...; -------.. .. 
;6520 (CHIP C7) = $E81X = KEYBOARD SCAN 
 .0 @DRA/DDRA .DE $E81.@ @CRA .DE $E81.P
 @DRB/DDRB .DE $E81.` @CRB .DE $E81.P ..
 .. ;6520 (CHIP C6) = E82X = IEEE 488 IN
TERFACE.!..!. !.0!.@!.P!;6522 (CHIP C5) 
= E84X = USER PORT`!.P!@DRB .DE $E840 ;D
ATA REG. B.!@DRA .DE $E841 ;DATA REG. A 
WITH HANDSHAKE.!@DDRB .DE $E842 ;DIRECTI
ON REG. B."@DDRA .DE $E843 ;DIRECTION RE
G. A."@T1L_LWLRC .DE $E844 ;TIMMER #1 WR
ITE LATCH READ COUNTER "@T1C_H .DE $E845
 ;TIMMER #.0"@T1L_L .DE $E846 ; .@"@T1L_
H .DE $E847 ; .P"@T2L_LWLRC .DE $E848 ;T
IMMER #2 WRITE LATCH READ COUNTER`"@T2C_
LWLRC .DE $E848 ; .P"@T2C_H .DE $E849 ; 
.."@SR .DE $E84A ;SHIFT REGISTER."@ACR .
DE $E84B ;AUXILLARY CONTROL REGISTER.#@P
CR .DE $E84C ;PERIPHERAL CONTROL REGISTE
R.#@IFR .DE $E84D ;INTERRUPT FLAG REGIST
ER #@IER .DE $E84E ;INTERRUPT ENABLE REG
ISTER0#@DRANH .DE $E84F ;DATA REGISTER A
 BUT NO HANDSHAKE@#.P#.`#.P#..
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL