0001 NAM HEXLDR VER 2.0 0002 0003 * COPYRIGHT (C) 1978 PERCOM DATA CO. INC. 0004 * ALL RIGHTS RESERVED 0005 * WRITTEN BY H.A. MAUCH 0006 * MODIFIED FOR MINIDOS 1.4 AUG 20, 1978 0007 ************************************************* 0008 * THIS PROGRAM READS AND CONVERTS THE ASCII-HEX 0009 * OBJECT FILE CREATED BY THE ASSEMBLER TO BINARY. 0010 * THE BINARY CODE IS THEN STORED IN MEMORY FOR 0011 * PROGRAM EXECUTION. REQUIRES MINIDOS VERSION 1.4. 0012 * 0013 * ALTHOUGH THIS LISTING WAS ASSEMBLED TO START AT 0014 * ADDRESS $2000, 'HEXLDR' IS RELOCATABLE AND MAY 0015 * BE PLACED ANYWERE IN MEMORY. 'HEXLDR' AND ITS 0016 * BUFFER REQUIRE 470 BYTES OF CONTIGUOUS MEMPORY. 0017 * 'HEXLDR' ALSO USED 14 BYTES OF THE MONITOR RAM 0018 * ($A040-$A057) FOR TEMPORARY POINTER STORAGE. 0019 ************************************************** 0020 * 0021 * KEYED IN FROM THE LFD-400 SYSTEMS MANUAL BY 0022 * MIKE DOUGLAS 1/10/2020 0023 * 0024 0001 TRKSEC EQU $01 0025 0005 FWDLNK EQU $05 0026 0007 BYTCNT EQU $07 0027 0016 TW EQU $16 0028 00ff EOF EQU $FF END OF FILE FLAG 0029 c00c RDSEC EQU $C00C 0030 c01e TYPERR EQU $C01E 0031 c363 PCRLF EQU $C363 0032 c003 CVTDTS EQU $C003 0033 e07e PDATA EQU $E07E 0034 e047 BADDR EQU $E047 0035 0036 a04a ORG $A04A 0037 a04a DSKFIL RMB 2 0038 a04c DSKPTR RMB 2 0039 a04e BYTECT RMB 1 0040 a04f BUFCNT RMB 1 0041 a050 BUFADD RMB 2 0042 a052 BUFPTR RMB 2 0043 a054 ADDRES RMB 2 0044 a056 XTEMP1 RMB 2 0045 0046 2000 ORG $2000 0047 2000 8e a0 7f LOAD LDS #$A07F SET STACK 0048 2003 8d 00 BSR HERE THIS SEQUENCE PERMITS THIS 0049 2005 30 HERE TSX TO BE LOCATED ANYWHERE 0050 2006 01 NOP 0051 2007 a6 01 LDAA 1,X 0052 2009 8b ca ADDA #PROMPT-HERE 0053 200b b7 a0 51 STAA BUFADD+1 0054 200e a6 00 LDAA 0,X 0055 2010 89 00 ADCA #0 0056 2012 b7 a0 50 STAA BUFADD 0057 2015 bd c3 63 JSR PCRLF 0058 2018 fe a0 50 LDX BUFADD 0059 201b bd e0 7e JSR PDATA 0060 201e 08 INX 0061 201f ff a0 50 STX BUFADD 0062 2022 bd e0 47 JSR BADDR GET FILE 0063 2025 bd c0 03 JSR CVTDTS 0064 2028 25 38 BCS ERR 0065 202a de 01 LDX TRKSEC 0066 202c ff a0 4a STX DSKFIL 0067 202f ff a0 4c STX DSKPTR 0068 2032 86 01 LDAA #1 0069 2034 b7 a0 4f STAA BUFCNT 0070 0071 2037 8d 54 LOAD3 BSR GETCHR 0072 2039 27 c5 BEQ LOAD 0073 203b 81 53 CMPA #'S 0074 203d 26 f8 BNE LOAD3 0075 203f 8d 4c BSR GETCHR 0076 2041 27 bd BEQ LOAD 0077 2043 81 39 CMPA #'9 0078 2045 27 b9 BEQ LOAD 0079 2047 81 31 CMPA #'1 0080 2049 26 ec BNE LOAD3 0081 204b 8d 28 BSR ONEBYT GET BYTE COUNT 0082 204d 80 02 SUBA #2 0083 204f b7 a0 4e STAA BYTECT 0084 2052 8d 13 BSR TWOBYT 0085 2054 8d 1f LOAD11 BSR ONEBYT 0086 2056 7a a0 4e DEC BYTECT 0087 2059 27 dc BEQ LOAD3 0088 205b a7 00 STAA 0,X 0089 205d 08 INX 0090 205e 20 f4 BRA LOAD11 0091 0092 2060 86 0e ERRE LDAA #$E WHAT? 0093 2062 bd c0 1e ERR JSR TYPERR ERROR TRAP 0094 2065 20 99 BRA LOAD UNSTRUCTURED RETURN 0095 0096 2067 8d 0c TWOBYT BSR ONEBYT 0097 2069 b7 a0 54 STAA ADDRES 0098 206c 8d 07 BSR ONEBYT 0099 206e b7 a0 55 STAA ADDRES+1 0100 2071 fe a0 54 LDX ADDRES 0101 2074 39 RTS 0102 2075 8d 09 ONEBYT BSR GETHEX 0103 2077 48 ASLA 0104 2078 48 ASLA 0105 2079 48 ASLA 0106 207a 48 ASLA 0107 207b 16 TAB 0108 207c 8d 02 BSR GETHEX 0109 207e 1b ABA 0110 207f 39 RTS 0111 2080 8d 0b GETHEX BSR GETCHR 0112 2082 27 dc BEQ ERRE 0113 2084 80 30 SUBA #$30 REMOVE ASCII OFFSET 0114 2086 81 09 CMPA #9 0115 2088 2f 02 BLE GH1 0116 208a 80 07 SUBA #7 0117 208c 39 GH1 RTS 0118 0119 208d ff a0 56 GETCHR STX XTEMP1 SAVE INDEX 0120 2090 37 PSHB SAVE B 0121 2091 7a a0 4f DEC BUFCNT BUMP DISK BUFFER COUNTER 0122 2094 26 16 BNE GETC1 BRANCH IF NOT EMPTY 0123 2096 86 ff LDAA #EOF END OF FILE DEFAULT 0124 2098 fe a0 4c LDX DSKPTR 0125 209b 27 18 BEQ GETC2 BRANCH IF END OF FILE 0126 209d 8d 1e BSR GTSCTR GET NEXT SECTOR 0127 209f 25 c1 BCS ERR BRANCH IF ERROR 0128 20a1 fe a0 50 LDX BUFADD POINT TO DISK BUFFER 0129 20a4 ff a0 52 STX BUFPTR 0130 20a7 96 07 LDAA BYTCNT GET BYTE COUNT 0131 20a9 b7 a0 4f STAA BUFCNT 0132 20ac fe a0 52 GETC1 LDX BUFPTR GET DISK BUF PTR 0133 20af a6 00 LDAA 0,X GET CHARACTER 0134 20b1 08 INX 0135 20b2 ff a0 52 STX BUFPTR 0136 20b5 fe a0 56 GETC2 LDX XTEMP1 0137 20b8 33 PULB RESTORE B 0138 20b9 81 ff CMPA #EOF 0139 20bb 0c CLC 0140 20bc 39 RTS 0141 0142 * GET A SECTOR OF DATA FROM DISK 0143 * ON ENTRY, X CONTAINS TRK-SEC 0144 20bd df 01 GTSCTR STX TRKSEC SET UP DISK HEADER 0145 20bf fe a0 50 LDX BUFADD SET UP TARGET ADDRESS 0146 20c2 df 16 STX TW 0147 20c4 bd c0 0c JSR RDSEC READ THE SECTOR 0148 20c7 25 05 BCS GTS1 BRANCH IF ERROR 0149 20c9 de 05 LDX FWDLNK 0150 20cb ff a0 4c STX DSKPTR PUT IN DISK PTR 0151 20ce 39 GTS1 RTS 0152 0153 20cf 46 49 4c 45 3f PROMPT FCC 'FILE?' 0154 20d4 04 FCB $04 0155 20d5 BUFF RMB 256 0156 END 0157 Number of errors 0