Meindert has created a Windows application called ROM Handler. →
ROM Handler GitHub Repository
The application can decompile a ROM or a HEPAX file.
You can then do a column copy/paste into a text file.
From there you can generate raw files with several tools.
Example using GAMES Pac ...
Code:
ROM Filename : C:\Apps\romhandler_v02026\GAMES-1A.ROM
------------------hex---dec----------------
XROM : $00A 010
# Functions : $00F 015
ROM Name : GAMES 1A (first function name)
Pause Entry : $000
Program Entry : $000
Sleep Entry : $000
OFF Entry : $000
Service Entry : $000
ON Entry : $000
MemLost Entry : $000
ROM Revision : GA-1A
Checksum : $19E CHECKSUM OK
NOPs Counted : 145
41CL YCRC : $DA9B9799
Code:
; LISTING GENERATED: 2024-04-09 13:17:34 by ROM Handler version 0.2.0.26
; OPEN FILE: C:\Apps\romhandler_v02026\GAMES-1A.ROM
.JDA ; Jacobs/De Arras Mnemonics
.MCODE
_XROM A000 00A .XROM %010 ; XROM number %010
_FCNS A001 00F .FCNS %015 ; # FAT Entries %015
_XR_010.00 A002 00F 0B3 .FATFUN GAMES___1A AFB3 ; MCode XROM 10.00 "GAMES 1A"
_XR_010.01 A004 200 024 .FATFUN BAGELS A024 ; UCode XROM 10.01 "BAGELS"
_XR_010.02 A006 202 08C .FATFUN BIOR A28C ; UCode XROM 10.02 "BIOR"
_XR_010.03 A008 205 0B7 .FATFUN BIOF A5B7 ; UCode XROM 10.03 "BIOF"
_XR_010.04 A00A 206 04B .FATFUN CRAPS A64B ; UCode XROM 10.04 "CRAPS"
_XR_010.05 A00C 206 0DE .FATFUN HANG A6DE ; UCode XROM 10.05 "HANG"
_XR_010.06 A00E 207 0E5 .FATFUN PINBALL A7E5 ; UCode XROM 10.06 "PINBALL"
_XR_010.07 A010 209 09C .FATFUN SWAR A99C ; UCode XROM 10.07 "SWAR"
_XR_010.08 A012 20D 0BE .FATFUN SUBHUNT ADBE ; UCode XROM 10.08 "SUBHUNT"
_XR_010.09 A014 20F 095 .FATFUN BOOM AF95 ; UCode XROM 10.09 "BOOM"
_XR_010.10 A016 20F 02D .FATFUN INI AF2D ; UCode XROM 10.10 "INI"
_XR_010.11 A018 20F 084 .FATFUN P AF84 ; UCode XROM 10.11 "P"
_XR_010.12 A01A 20F 069 .FATFUN SIZE? AF69 ; UCode XROM 10.12 "SIZE?"
_XR_010.13 A01C 20F 042 .FATFUN RNDM AF42 ; UCode XROM 10.13 "RNDM"
_XR_010.14 A01E 20F 05B .FATFUN RNDMW AF5B ; UCode XROM 10.14 "RNDMW"
_FATEND A020 000 000 .FATEND ; End of FAT
A022 058 250 .UCODE 058 250 ; UserCode: 621 bytes (88 regs + 5 bytes) NONPRIVATE
BAGELS A024 1CA 000 0F7 001 *LBL "BAGELS" ; 00 42 41 47 45 4C 53 , previous LBL @A01F [-005 bytes]
A02E 112 018 002 28
A030 1A2 08C 003 XROM SIZE? ; XROM 10,12 in [GAMES___1A], this ROM
A032 1AB 019 004 FC?C 25
A034 18E 005 PROMPT
A035 1A8 008 006 SF 08
A037 1A2 08A 007 XROM INI ; XROM 10,10 in [GAMES___1A], this ROM
A039 191 018 008 STO 24
A03B 1A9 005 009 CF 05
A03D 111 010 010 10
A03F 191 014 011 STO 20
A041 1CF 07B 012 *LBL a (11)
A043 190 019 013 RCL 25
A045 1F7 04C 045 014 "LENGTH?" ; 4C 45 4E 47 54 48 3F
A04D 18E 015 PROMPT
A04E 161 016 ABS
A04F 168 017 INT
A050 167 018 X=0?
A051 1D1 0DD 0FE 019 GTO d (14) ; LBL d (14) @A22F [+477 bytes]
A054 118 020 8
A055 171 021 X<>Y
A056 145 022 X>Y?
A057 1D1 0D7 0FE 023 GTO d (14) ; LBL d (14) @A22F [+471 bytes]
A05A 191 015 024 STO 21
A05C 191 019 025 STO 25
A05E 190 01B 026 RCL 27
A060 1F8 04D 041 027 "MAX DIG?" ; 4D 41 58 20 44 49 47 3F
A069 18E 028 PROMPT
A06A 161 029 ABS
A06B 168 030 INT
A06C 167 031 X=0?
A06D 1D1 0C1 0FE 032 GTO d (14) ; LBL d (14) @A22F [+449 bytes]
A070 191 01B 033 STO 27
A072 119 034 9
A073 171 035 X<>Y
A074 145 036 X>Y?
A075 1D1 0B9 0FE 037 GTO d (14) ; LBL d (14) @A22F [+441 bytes]
A078 190 014 038 RCL 20
A07A 143 039 /
A07B 192 015 040 ST+ 21
A07D 1AD 008 041 FC? 08
A07F 1D0 019 0FC 042 GTO b (12) ; LBL b (12) @A099 [+025 bytes]
A082 1FC 044 049 043 "DIGS CAN DUP" ; 44 49 47 53 20 43 41 4E 20 44 55 50
A08F 17E 044 AVIEW
A090 1F7 030 020 045 "0 LEGAL" ; 30 20 4C 45 47 41 4C
A098 17E 046 AVIEW
A099 1CF 07C 047 *LBL b (12)
A09B 177 048 CLX
A09C 191 016 049 STO 22
A09E 1A8 01D 050 SF 29
A0A0 1A8 009 051 SF 09
A0A2 1F6 047 055 052 "GUESS?" ; 47 55 45 53 53 3F
A0A9 18E 053 PROMPT
A0AA 1A9 01D 054 CF 29
A0AC 166 055 X<0?
A0AD 1D1 0A2 090 056 GTO 16 ; LBL 16 @A250 [+418 bytes]
A0B0 1A9 009 057 CF 09
A0B2 1CF 07D 058 *LBL c (13)
A0B4 110 059 0
A0B5 191 013 060 STO 19
A0B7 191 01A 061 STO 26
A0B9 1AD 005 062 FC? 05
A0BB 1B1 08B 063 GTO 00 ; LBL 00 @A0C8 [+011 bytes]
A0BD 1AC 007 064 FS? 07
A0BF 1B2 0A0 065 GTO 01 ; LBL 01 @A0E1 [+032 bytes]
A0C1 177 066 CLX
A0C2 190 018 067 RCL 24
A0C4 160 068 1/X
A0C5 16B 069 R-D
A0C6 191 018 070 STO 24
A0C8 101 071 *LBL 00
A0C9 1A8 005 072 SF 05
A0CB 177 073 CLX
A0CC 11A 012 011 074 .211327
A0D3 183 075 ENTER^
A0D4 119 018 012 076 9821
A0D8 190 018 077 RCL 24
A0DA 142 078 *
A0DB 140 079 +
A0DC 169 080 FRC
A0DD 16A 081 D-R
A0DE 160 082 1/X
A0DF 191 018 083 STO 24
A0E1 102 084 *LBL 01
A0E2 1A9 007 085 CF 07
A0E4 175 086 RDN
A0E5 168 087 INT
A0E6 191 017 088 STO 23
A0E8 190 018 089 RCL 24
A0EA 160 090 1/X
A0EB 16B 091 R-D
A0EC 1A8 006 092 SF 06
A0EE 1E1 00E 08B 093 XEQ 11 ; LBL 11 @A1FD [+270 bytes]
A0F1 190 017 094 RCL 23
A0F3 1A9 006 095 CF 06
A0F5 1E1 007 08B 096 XEQ 11 ; LBL 11 @A1FD [+263 bytes]
A0F8 1E1 04A 0FF 097 XEQ e (15) ; LBL e (15) @A243 [+330 bytes]
A0FB 103 098 *LBL 02
A0FC 190 08A 099 RCL IND 10
A0FE 190 014 100 RCL 20
A100 193 00A 101 ST- 10
A102 177 102 CLX
A103 190 08A 103 RCL IND 10
A105 179 104 X#Y?
A106 1B4 088 105 GTO 03 ; LBL 03 @A110 [+008 bytes]
A108 154 106 CHS
A109 171 107 X<>Y
A10A 154 108 CHS
A10B 171 109 X<>Y
A10C 111 110 1
A10D 192 013 111 ST+ 19
A10F 175 112 RDN
A110 104 113 *LBL 03
A111 191 08A 114 STO IND 10
A113 171 115 X<>Y
A114 190 014 116 RCL 20
A116 192 00A 117 ST+ 10
A118 175 118 RDN
A119 191 08A 119 STO IND 10
A11B 197 00A 120 DSE 10
A11D 1B3 024 121 GTO 02 ; LBL 02 @A0FB [-036 bytes]
A11F 1E1 023 0FF 122 XEQ e (15) ; LBL e (15) @A243 [+291 bytes]
A122 105 123 *LBL 04
A123 190 08A 124 RCL IND 10
A125 166 125 X<0?
A126 1B8 099 126 GTO 07 ; LBL 07 @A141 [+025 bytes]
A128 1A8 007 127 SF 07
A12A 190 019 128 RCL 25
A12C 130 129 STO 00
A12D 106 130 *LBL 05
A12E 177 131 CLX
A12F 190 080 132 RCL IND 00
A131 178 133 X=Y?
A132 1B7 086 134 GTO 06 ; LBL 06 @A13A [+006 bytes]
A134 197 000 135 DSE 00
A136 1B6 00B 136 GTO 05 ; LBL 05 @A12D [-011 bytes]
A138 1B8 087 137 GTO 07 ; LBL 07 @A141 [+007 bytes]
A13A 107 138 *LBL 06
A13B 154 139 CHS
A13C 191 080 140 STO IND 00
A13E 111 141 1
A13F 192 01A 142 ST+ 26
A141 108 143 *LBL 07
A142 197 00A 144 DSE 10
A144 1B5 024 145 GTO 04 ; LBL 04 @A122 [-036 bytes]
A146 190 019 146 RCL 25
A148 13A 147 STO 10
A149 177 148 CLX
A14A 109 149 *LBL 08
A14B 191 08A 150 STO IND 10
A14D 197 00A 151 DSE 10
A14F 1B9 007 152 GTO 08 ; LBL 08 @A14A [-007 bytes]
A151 1E0 0F1 0FF 153 XEQ e (15) ; LBL e (15) @A243 [+241 bytes]
A154 177 154 CLX
A155 10A 155 *LBL 09
A156 191 08A 156 STO IND 10
A158 197 00A 157 DSE 10
A15A 1BA 007 158 GTO 09 ; LBL 09 @A155 [-007 bytes]
A15C 19C 000 159 FIX 00
A15E 111 160 1
A15F 192 016 161 ST+ 22
A161 1AD 007 162 FC? 07
A163 1BB 0CD 163 GTO 10 ; LBL 10 @A1B2 [+077 bytes]
A165 177 164 CLX
A166 19F 005 165 TONE 05
A168 19F 005 166 TONE 05
A16A 1CF 00F 167 *LBL 15
A16C 1AD 008 168 FC? 08
A16E 1B8 095 169 GTO 07 ; LBL 07 @A185 [+021 bytes]
A170 1A9 008 170 CF 08
A172 1F4 050 04C 171 "PLC=" ; 50 4C 43 3D
A177 19B 013 172 ARCL 19
A179 1F7 07F 020 173 >" XVAL=" ; 7F 20 58 56 41 4C 3D
A181 19B 01A 174 ARCL 26
A183 17E 175 AVIEW
A184 189 176 PSE
A185 108 177 *LBL 07
A186 1E0 0EB 091 178 XEQ 17 ; LBL 17 @A272 [+235 bytes]
A189 1F2 07F 03A 179 >":" ; 7F 3A
A18C 19C 000 180 FIX 00
A18E 119 181 9
A18F 190 019 182 RCL 25
A191 141 183 -
A192 130 184 STO 00
A193 1CF 066 185 *LBL A (102)
A195 1F2 07F 020 186 >" " ; 7F 20
A198 197 000 187 DSE 00
A19A 1D0 008 066 188 GTO A (102) ; LBL A (102) @A193 [-008 bytes]
A19D 19B 013 189 ARCL 19
A19F 1F2 07F 02D 190 >"-" ; 7F 2D
A1A2 19B 01A 191 ARCL 26
A1A4 1A8 01D 192 SF 29
A1A6 18E 193 PROMPT
A1A7 1A9 01D 194 CF 29
A1A9 187 195 CLA
A1AA 166 196 X<0?
A1AB 1D0 0A4 090 197 GTO 16 ; LBL 16 @A250 [+164 bytes]
A1AE 18F 198 ADV
A1AF 1D0 0FE 07D 199 GTO c (13) ; LBL c (13) @A0B2 [-254 bytes]
A1B2 10B 200 *LBL 10
A1B3 19F 008 201 TONE 08
A1B5 19F 009 202 TONE 09
A1B7 1FB 059 04F 203 "YOU GOT IT." ; 59 4F 55 20 47 4F 54 20 49 54 2E
A1C3 17E 204 AVIEW
A1C4 1E0 0AD 091 205 XEQ 17 ; LBL 17 @A272 [+173 bytes]
A1C7 17E 206 AVIEW
A1C8 19C 000 207 FIX 00
A1CA 187 208 CLA
A1CB 19B 016 209 ARCL 22
A1CD 1F7 07F 020 210 >" GUESS" ; 7F 20 47 55 45 53 53
A1D5 111 211 1
A1D6 190 016 212 RCL 22
A1D8 178 213 X=Y?
A1D9 1BB 084 214 GTO 10 ; LBL 10 @A1DF [+004 bytes]
A1DB 1F3 07F 045 215 >"ES" ; 7F 45 53
A1DF 10B 216 *LBL 10
A1E0 17E 217 AVIEW
A1E1 1A8 01D 218 SF 29
A1E3 18C 219 AON
A1E4 1F1 04E 220 "N" ; 4E
A1E6 19A 072 221 ASTO Y (2)
A1E8 1F9 053 041 222 "SAME? Y/N" ; 53 41 4D 45 3F 20 59 2F 4E
A1F2 18E 223 PROMPT
A1F3 18B 224 AOFF
A1F4 19A 073 225 ASTO X (3)
A1F6 178 226 X=Y?
A1F7 1D1 0B7 07B 227 GTO a (11) ; LBL a (11) @A041 [-439 bytes]
A1FA 1D1 062 07C 228 GTO b (12) ; LBL b (12) @A099 [-354 bytes]
A1FD 10C 229 *LBL 11
A1FE 190 015 230 RCL 21
A200 169 231 FRC
A201 190 014 232 RCL 20
A203 160 233 1/X
A204 140 234 +
A205 130 235 STO 00
A206 177 236 CLX
A207 190 019 237 RCL 25
A209 13A 238 STO 10
A20A 175 239 RDN
A20B 1AC 006 240 FS? 06
A20D 1BD 088 241 GTO 12 ; LBL 12 @A217 [+008 bytes]
A20F 174 242 R^
A210 157 243 10^X
A211 143 244 /
A212 161 245 ABS
A213 1E0 02F 0FF 246 XEQ e (15) ; LBL e (15) @A243 [+047 bytes]
A216 175 247 RDN
A217 10D 248 *LBL 12
A218 139 249 STO 09
A219 10E 250 *LBL 13
A21A 129 251 RCL 09
A21B 169 252 FRC
A21C 190 014 253 RCL 20
A21E 142 254 *
A21F 139 255 STO 09
A220 120 256 RCL 00
A221 171 257 X<>Y
A222 1AC 006 258 FS? 06
A224 142 259 *
A225 111 260 1
A226 140 261 +
A227 168 262 INT
A228 191 08A 263 STO IND 10
A22A 197 00A 264 DSE 10
A22C 1BE 015 265 GTO 13 ; LBL 13 @A219 [-021 bytes]
A22E 185 266 RTN
A22F 1CF 07E 267 *LBL d (14)
A231 19F 004 268 TONE 04
A233 1FB 049 04C 269 "ILLEGAL NO." ; 49 4C 4C 45 47 41 4C 20 4E 4F 2E
A23F 17E 270 AVIEW
A240 1D2 000 07B 271 GTO a (11) ; LBL a (11) @A041 [-512 bytes]
A243 1CF 07F 272 *LBL e (15)
A245 190 019 273 RCL 25
A247 190 014 274 RCL 20
A249 140 275 +
A24A 11A 010 011 276 .01
A24D 140 277 +
A24E 13A 278 STO 10
A24F 185 279 RTN
A250 1CF 010 280 *LBL 16
A252 1A9 01D 281 CF 29
A254 187 282 CLA
A255 19C 000 283 FIX 00
A257 1F4 04C 045 284 "LEN=" ; 4C 45 4E 3D
A25C 19B 019 285 ARCL 25
A25E 1F7 07F 02C 286 >", MAX=" ; 7F 2C 20 4D 41 58 3D
A266 19B 01B 287 ARCL 27
A268 17E 288 AVIEW
A269 187 289 CLA
A26A 1AC 009 290 FS? 09
A26C 1D1 0D4 07C 291 GTO b (12) ; LBL b (12) @A099 [-468 bytes]
A26F 1D1 006 00F 292 GTO 15 ; LBL 15 @A16A [-262 bytes]
A272 1CF 011 293 *LBL 17
A274 187 294 CLA
A275 190 017 295 RCL 23
A277 190 019 296 RCL 25
A279 157 297 10^X
A27A 143 298 /
A27B 169 299 FRC
A27C 19C 099 300 FIX IND 25
A27E 1F4 020 020 301 " " ; 20 20 20 20
A283 19B 073 302 ARCL X (3)
A285 188 303 ASHF
A286 185 304 RTN
A287 1C4 057 22F 305 END ; Program END, previous LBL @A024 [-611 bytes]
...
BOOM AF95 1C6 002 0F5 041 *LBL "BOOM" ; 00 42 4F 4F 4D , previous LBL @AF84 [-017 bytes]
AF9D 19F 005 042 TONE 05
AF9F 19F 005 043 TONE 05
AFA1 19F 005 044 TONE 05
AFA3 19F 004 045 TONE 04
AFA5 185 046 RTN
AFA6 1C6 002 22F 047 END ; Program END, previous LBL @AF95 [-017 bytes]
.MCODE
AFB2 007 001 00D .FNAME "GAMES 1A" ; 007 001 00D 005 013 020 020 020 031 081
GAMES___1A AFB3 3E0 RTN
AFB4 000 .FILL NOP 64 ; 64 consecutive NOPs from $AFB4 to $AFF3
_EN_PSE AFF4 000 NOP ; PAUSE interrupt
_EN_PRGM AFF5 000 NOP ; After each program line
_EN_SLEEP AFF6 000 NOP ; Awaken from DEEP SLEEP
_EN_OFF AFF7 000 NOP ; Turn OFF by key or XEQ OFF
_EN_IOSVC AFF8 000 NOP ; I/O service flag set
_EN_ON AFF9 000 NOP ; Awaken by pressing ON key
_EN_MEMLST AFFA 000 NOP ; MEMORY LOST interrupt
_ROMREV AFFB 007 001 031 .ROMREV GA-1A
_CHKSUM AFFF 19E .CHKSUM 19E ; Calculated Checksum: 19E
; Label Cross reference table
; LOCAL LABELS
; SYMBOL--------ADDR----REFERENCES-------------
; _CHKSUM AFFF
; _EN_IOSVC AFF8
; _EN_MEMLST AFFA
; _EN_OFF AFF7
; _EN_ON AFF9
; _EN_PRGM AFF5
; _EN_PSE AFF4
; _EN_SLEEP AFF6
; _FATEND A020
; _FATEND A021
; _FCNS A001
; _ROMREV AFFB
; _ROMREV AFFC
; _ROMREV AFFD
; _ROMREV AFFE
; _XR_010.00 A002
; _XR_010.01 A004
; _XR_010.02 A006
; _XR_010.03 A008
; _XR_010.04 A00A
; _XR_010.05 A00C
; _XR_010.06 A00E
; _XR_010.07 A010
; _XR_010.08 A012
; _XR_010.09 A014
; _XR_010.10 A016
; _XR_010.11 A018
; _XR_010.12 A01A
; _XR_010.13 A01C
; _XR_010.14 A01E
; _XROM A000
; BAGELS A024 A004
; BIOF A5B7 A008
; BIOR A28C A006
; BOOM AF95 A014
; CRAPS A64B A00A
; GAMES___1A AFB3 A002
; HANG A6DE A00C
; INI AF2D A016
; P AF84 A018
; PINBALL A7E5 A00E
; RNDM AF42 A01C
; RNDMW AF5B A01E
; SIZE? AF69 A01A
; SUBHUNT ADBE A012
; SWAR A99C A010
; EXTERNAL REFERENCES
; SYMBOL--------VALUE---REFERENCES-------------
; No external references