Bonjour
Comment est il possible de désassembler le code de ce module. Le module semble protégé ?
Je recherche le code de la commande hprompt notamment pour m’en inspirer.
Merci !!
Fonction HPROMPT sur Module HEPAX
- pcscote
- Apprenti expert
- Messages : 27
- Inscription : lun. 23 janv. 2017 04:51
- Localisation : Quebec/Canada
Re: Fonction HPROMPT sur Module HEPAX
Bonjour John,
L'application Windows ROMHandler permet d'ouvrir, d'analyser et de décompiler les fichiers de type ROM et MOD.
→ ROMHandler
Monte Dalrymple publie mensuellement une mise à jour des fichiers ROM.
→ rom_files_AAMMJJ.zip
L'application Windows V41 est un émulateur du processeur NUT, il permet d'exécuter et de déboguer du code machine (mcode)
→ V41
Sylvain
PS1: dernière version des fichiers du module HEPAX original
PS2: exemple de décompilation de ROMHandler
PS3: décompilation partielle de la fonction HPROMPT
L'application Windows ROMHandler permet d'ouvrir, d'analyser et de décompiler les fichiers de type ROM et MOD.
→ ROMHandler
Monte Dalrymple publie mensuellement une mise à jour des fichiers ROM.
→ rom_files_AAMMJJ.zip
L'application Windows V41 est un émulateur du processeur NUT, il permet d'exécuter et de déboguer du code machine (mcode)
→ V41
Sylvain
PS1: dernière version des fichiers du module HEPAX original
Code : Tout sélectionner
page N banque 1: HEPX1-1E.ROM ou HEPX1-1F.ROM
page N banque 2: HEPX2-1D.ROM
page N banque 3: HEPX3-1D.ROM
page N banque 4: HEPX4-1D.ROM
Code : Tout sélectionner
; LISTING GENERATED: 2025-06-09 08:21:29 by ROM Handler version 0.2.0.26
; OPEN FILE: C:\Apps\romhandler_v02026\HEPX1-1F.ROM
.JDA ; Jacobs/De Arras Mnemonics
.MCODE
_XROM A000 007 .XROM %007 ; XROM number %007
_FCNS A001 037 .FCNS %055 ; # FAT Entries %055
_XR_007.00 A002 000 08D .FATFUN -HEPAX_1F A08D ; MCode XROM 07.00 "-HEPAX 1F"
_XR_007.01 A004 003 008 .FATFUN HAPPCHR A308 ; MCode XROM 07.01 "HAPPCHR"
_XR_007.02 A006 003 01F .FATFUN HAPPREC A31F ; MCode XROM 07.02 "HAPPREC"
_XR_007.03 A008 002 0BA .FATFUN HARCLRC A2BA ; MCode XROM 07.03 "HARCLRC"
_XR_007.04 A00A 002 0E6 .FATFUN HASROOM A2E6 ; MCode XROM 07.04 "HASROOM"
_XR_007.05 A00C 001 0F4 .FATFUN HCLFL A1F4 ; MCode XROM 07.05 "HCLFL"
_XR_007.06 A00E 001 0ED .FATFUN HCRFLAS A1ED ; MCode XROM 07.06 "HCRFLAS"
_XR_007.07 A010 001 0DC .FATFUN HCRFLD A1DC ; MCode XROM 07.07 "HCRFLD"
_XR_007.08 A012 002 0D0 .FATFUN HDELCHR A2D0 ; MCode XROM 07.08 "HDELCHR"
_XR_007.09 A014 002 0DD .FATFUN HDELREC A2DD ; MCode XROM 07.09 "HDELREC"
_XR_007.10 A016 001 0FF .FATFUN HEPDIR A1FF ; MCode XROM 07.10 "HEPDIR"
_XR_007.11 A018 003 08A .FATFUN HEPDIRX A38A ; MCode XROM 07.11 "HEPDIRX"
_XR_007.12 A01A 002 00B .FATFUN HEPROOM A20B ; MCode XROM 07.12 "HEPROOM"
_XR_007.13 A01C 002 0F3 .FATFUN HFLSIZE A2F3 ; MCode XROM 07.13 "HFLSIZE"
_XR_007.14 A01E 003 076 .FATFUN HGETA A376 ; MCode XROM 07.14 "HGETA"
_XR_007.15 A020 003 081 .FATFUN HGETK A381 ; MCode XROM 07.15 "HGETK"
_XR_007.16 A022 001 005 .FATFUN HGETR A105 ; MCode XROM 07.16 "HGETR"
_XR_007.17 A024 002 0C7 .FATFUN HGETREC A2C7 ; MCode XROM 07.17 "HGETREC"
_XR_007.18 A026 003 031 .FATFUN HGETRX A331 ; MCode XROM 07.18 "HGETRX"
_XR_007.19 A028 000 0F2 .FATFUN HGETX A0F2 ; MCode XROM 07.19 "HGETX"
_XR_007.20 A02A 003 016 .FATFUN HINSCHR A316 ; MCode XROM 07.20 "HINSCHR"
_XR_007.21 A02C 003 029 .FATFUN HINSREC A329 ; MCode XROM 07.21 "HINSREC"
_XR_007.22 A02E 003 05D .FATFUN HPOSFL A35D ; MCode XROM 07.22 "HPOSFL"
_XR_007.23 A030 002 016 .FATFUN HPURFL A216 ; MCode XROM 07.23 "HPURFL"
_XR_007.24 A032 000 0DF .FATFUN HRCLPT A0DF ; MCode XROM 07.24 "HRCLPT"
_XR_007.25 A034 000 0D3 .FATFUN HRCLPTA A0D3 ; MCode XROM 07.25 "HRCLPTA"
_XR_007.26 A036 003 09A .FATFUN HREADFL A39A ; MCode XROM 07.26 "HREADFL"
_XR_007.27 A038 002 0FC .FATFUN HRENAME A2FC ; MCode XROM 07.27 "HRENAME"
_XR_007.28 A03A 003 068 .FATFUN HSAVEA A368 ; MCode XROM 07.28 "HSAVEA"
_XR_007.29 A03C 002 0A3 .FATFUN HSAVEK A2A3 ; MCode XROM 07.29 "HSAVEK"
_XR_007.30 A03E 003 046 .FATFUN HSAVEP A346 ; MCode XROM 07.30 "HSAVEP"
_XR_007.31 A040 000 0FA .FATFUN HSAVER A0FA ; MCode XROM 07.31 "HSAVER"
_XR_007.32 A042 003 03E .FATFUN HSAVERX A33E ; MCode XROM 07.32 "HSAVERX"
_XR_007.33 A044 000 0E7 .FATFUN HSAVEX A0E7 ; MCode XROM 07.33 "HSAVEX"
_XR_007.34 A046 001 00B .FATFUN HSEC A10B ; MCode XROM 07.34 "HSEC"
_XR_007.35 A048 000 0CA .FATFUN HSEKPT A0CA ; MCode XROM 07.35 "HSEKPT"
_XR_007.36 A04A 000 0BA .FATFUN HSEKPTA A0BA ; MCode XROM 07.36 "HSEKPTA"
_XR_007.37 A04C 001 017 .FATFUN HUNSEC A117 ; MCode XROM 07.37 "HUNSEC"
_XR_007.38 A04E 00B 021 .FATFUN HWRTFL AB21 ; MCode XROM 07.38 "HWRTFL"
_XR_007.39 A050 003 052 .FATFUN PRIVATE A352 ; MCode XROM 07.39 "PRIVATE"
_XR_007.40 A052 002 020 .FATFUN CLRAM A220 ; MCode XROM 07.40 "CLRAM"
_XR_007.41 A054 002 097 .FATFUN CODE A297 ; MCode XROM 07.41 "CODE"
_XR_007.42 A056 002 02C .FATFUN COPYROM A22C ; MCode XROM 07.42 "COPYROM"
_XR_007.43 A058 002 08E .FATFUN DECODE A28E ; MCode XROM 07.43 "DECODE"
_XR_007.44 A05A 002 083 .FATFUN DECODYX A283 ; MCode XROM 07.44 "DECODYX"
_XR_007.45 A05C 001 01F .FATFUN DISASM A11F ; MCode XROM 07.45 "DISASM"
_XR_007.46 A05E 000 09C .FATFUN HEPAX A09C ; MCode XROM 07.46 "HEPAX"
_XR_007.47 A060 000 094 .FATFUN HEPAXA A094 ; MCode XROM 07.47 "HEPAXA"
_XR_007.48 A062 003 0E7 .FATFUN HEXEDIT A3E7 ; MCode XROM 07.48 "HEXEDIT"
_XR_007.49 A064 002 038 .FATFUN HPROMPT A238 ; MCode XROM 07.49 "HPROMPT"
_XR_007.50 A066 002 0AE .FATFUN RAMTOG A2AE ; MCode XROM 07.50 "RAMTOG"
_XR_007.51 A068 008 0B7 .FATFUN READROM A8B7 ; MCode XROM 07.51 "READROM"
_XR_007.52 A06A 009 025 .FATFUN WRTROM A925 ; MCode XROM 07.52 "WRTROM"
_XR_007.53 A06C 000 0AC .FATFUN XF A0AC ; MCode XROM 07.53 "XF"
_XR_007.54 A06E 000 0A7 .FATFUN XFA A0A7 ; MCode XROM 07.54 "XFA"
_FATEND A070 000 000 .FATEND ; End of FAT
A072 000 .FILL NOP 18 ; 18 consecutive NOPs from $A072 to $A083
A08C 02D 008 005 .FNAME "-HEPAX 1F" ; 02D 008 005 010 001 018 020 031 086
-HEPAX_1F A08D 3E0 RTN
A093 108 205 010 .FNAME "HEPAXA" ; 108 205 010 001 018 081 / Prompt: non-null Alpha
HEPAXA A094 000 NOP ; NOT programmable and NULLable
A095 108 SETF 8
A096 043 JNC +08 LB_A09E A09E
A09B 108 105 010 .FNAME "HEPAX" ; 108 105 010 001 098 / Prompt: 3 digits
HEPAX A09C 000 NOP ; NOT programmable and NULLable
A09D 104 CLRF 8
LB_A09E A09E 244 CLRF 9
LB_A09F A09F 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A0A2 240 HPIL=C 1
A0A3 000 NOP
A0A6 118 206 081 .FNAME "XFA" ; 118 206 081 / Prompt: non-null Alpha
XFA A0A7 000 NOP ; NOT programmable and NULLable
A0A8 108 SETF 8
A0A9 02B JNC +05 LB_A0AE A0AE
A0AB 118 186 .FNAME "XF" ; 118 186 / Prompt: 3 digits
XF A0AC 000 NOP ; NOT programmable and NULLable
A0AD 104 CLRF 8
LB_A0AE A0AE 248 SETF 9
A0AF 383 JNC -10 LB_A09F A09F
A0B0 000 .FILL NOP 3 ; 3 consecutive NOPs from $A0B0 to $A0B2
A0B9 008 013 005 .FNAME "HSEKPTA" ; 008 013 005 00B 010 014 081
HSEKPTA A0BA 388 SETF 0
LB_A0BB A0BB 0F8 READ ( 3)X
A0BC 361 050 ?NC XQ CHK$S 14D8 ; HP41 SYSTEM ROM 1
A0BE 260 SETHEX
A0BF 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A0C2 140 ENBANK3
A0C3 000 NOP
A0C9 008 013 005 .FNAME "HSEKPT" ; 008 013 005 00B 010 094
HSEKPT A0CA 384 CLRF 0
A0CB 383 JNC -10 LB_A0BB A0BB
A0D2 008 012 003 .FNAME "HRCLPTA" ; 008 012 003 00C 010 014 081
HRCLPTA A0D3 388 SETF 0
LB_A0D4 A0D4 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A0D7 195 000 ?NC XQ 0065
A0DE 008 012 003 .FNAME "HRCLPT" ; 008 012 003 00C 010 094
HRCLPT A0DF 384 CLRF 0
A0E0 3A3 JNC -0C LB_A0D4 A0D4
A0E6 008 013 001 .FNAME "HSAVEX" ; 008 013 001 016 005 098
HSAVEX A0E7 388 SETF 0
LB_A0E8 A0E8 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A0EB 1B6 A=A-1 XS
A0EC 000 NOP
A0F1 008 007 005 .FNAME "HGETX" ; 008 007 005 014 098
HGETX A0F2 384 CLRF 0
A0F3 3AB JNC -0B LB_A0E8 A0E8
A0F9 008 013 001 .FNAME "HSAVER" ; 008 013 001 016 005 092
HSAVER A0FA 208 SETF 2
LB_A0FB A0FB 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A0FE 115 001 ?C XQ REGADR 0045 ; HP41 SYSTEM ROM 0
A104 008 007 005 .FNAME "HGETR" ; 008 007 005 014 092
HGETR A105 204 CLRF 2
A106 3AB JNC -0B LB_A0FB A0FB
A10A 008 013 005 .FNAME "HSEC" ; 008 013 005 083
HSEC A10B 208 SETF 2
LB_A10C A10C 3B5 08C 398 GOSUB LB_AF98 AF98 ; ?NC XQ 23ED, address in 4th Quad
A10F 1BB JNC +37 LB_A146 A146
_DATA A110 001 .DATA 001
A116 008 015 00E .FNAME "HUNSEC" ; 008 015 00E 013 005 083
HUNSEC A117 204 CLRF 2
A118 3A3 JNC -0C LB_A10C A10C
A11E 004 009 013 .FNAME "DISASM" ; 004 009 013 001 013 08D
DISASM A11F 2CC ?FSET 13
A120 01F JC +03 LB_A123 A123
A121 04C ?FSET 4
A122 0DB JNC +1B LB_A13D A13D
LB_A123 A123 138 READ ( 4)L
A124 10E A=C ALL
A125 07C RCR 4
A126 01C R= 3
A127 362 ?A#C @R
A128 0B5 0A3 ?C GO ERRDE 282D ; HP41 SYSTEM ROM 2
A12A 1BC RCR 11
A12B 10E A=C ALL
A12C 15C R= 6
A12D 35D 000 ?NC XQ PCTOC 00D7 ; HP41 SYSTEM ROM 0
A12F 362 ?A#C @R
A130 02F JC +05 LB_A135 A135
A131 3B5 08C 100 GOSUB LB_AD00 AD00 ; ?NC XQ 23ED, address in 4th Quad
A134 05B JNC +0B LB_A13F A13F
LB_A135 A135 09C R= 5
A136 010 LD@R 0
A137 110 LD@R 4
A138 010 LD@R 0
A139 170 PUSHADR
A13A 3AD 08C 3C5 GOTO LB_AFC5 AFC5 ; ?NC XQ 23EB, address in 4th Quad
LB_A13D A13D 3C1 0B0 ?NC XQ CLLCDE 2CF0 ; HP41 SYSTEM ROM 2
LB_A13F A13F 3BD 01C ?NC XQ MESSL 07EF
A141 004 009 293 .MESSL "DIS" ; 004 009 293
A144 149 024 ?NC XQ ENCP00 0952 ; HP41 SYSTEM ROM 0
LB_A146 A146 04E C=0 ALL
A147 130 033 LDI 033
A149 33C RCR 1
A14A 268 WRIT ( 9)Q
A14B 36D 08C 36D GOSUB LB_A76D A76D ; ?NC XQ 23DB, address in 2nd Quad
A14E 38C ?FSET 0
A14F 177 JC +2E LB_A17D A17D
A150 10C ?FSET 8
A151 043 JNC +08 LB_A159 A159
A152 349 08C 1A4 GOSUB LB_A1A4 A1A4 ; ?NC XQ 23D2, address in 1st Quad
A155 365 08C 375 GOTO LB_A775 A775 ; ?NC XQ 23D9, address in 2nd Quad
LB_A158 A158 25B JNC -35 LB_A123 A123
LB_A159 A159 18C ?FSET 11
A15A 177 JC +2E LB_A188 A188
A15B 278 READ ( 9)Q
A15C 27C RCR 9
A15D 29C R= 7
A15E 04A C=0 R<-
A15F 27C RCR 9
A160 10E A=C ALL
A161 238 READ ( 8)P
A162 2BC RCR 7
A163 0A6 A<>C S&X
A164 0BE A<>C MS
A165 2BC RCR 7
A166 228 WRIT ( 8)P
A167 3D9 01C ?NC XQ ENLCD 07F6 ; HP41 SYSTEM ROM 0
A169 130 020 LDI 020
A16B 106 A=C S&X
LB_A16C A16C 3B8 READ (14)d
A16D 366 ?A#C S&X
A16E 3F3 JNC -02 LB_A16C A16C
A16F 3E8 WRIT (15)e
A170 130 02D LDI 02D
A172 3E8 WRIT (15)e
A173 149 024 ?NC XQ ENCP00 0952 ; HP41 SYSTEM ROM 0
A175 04E C=0 ALL
A176 130 033 LDI 033
A178 33C RCR 1
A179 268 WRIT ( 9)Q
Code : Tout sélectionner
A237 008 010 012 .FNAME "HPROMPT" ; 008 010 012 00F 00D 010 094
HPROMPT A238 0F8 READ ( 3)X
A239 38D 008 ?NC XQ BCDBIN 02E3 ; HP41 SYSTEM ROM 0
A23B 266 C=C-1 S&X
A23C 106 A=C S&X
A23D 130 006 LDI 006
A23F 306 ?A<C S&X
A240 0B5 0A2 ?NC GO ERRDE 282D ; HP41 SYSTEM ROM 2
A242 0A6 A<>C S&X
A243 106 A=C S&X
A244 33C RCR 1
A245 0A6 A<>C S&X
A246 05A C=0 M
A247 056 C=0 XS
A248 070 N=C
A249 125 01C ?NC XQ OFSHFT 0749 ; HP41 SYSTEM ROM 0
A24B 108 SETF 8
A24C 041 0B0 ?NC XQ ARGOUT 2C10 ; HP41 SYSTEM ROM 2
A24E 130 01F LDI 01F
A250 106 A=C S&X
A251 3D9 01C ?NC XQ ENLCD 07F6 ; HP41 SYSTEM ROM 0
LB_A253 A253 3B8 READ (14)d
A254 366 ?A#C S&X
A255 3F7 JC -02 LB_A253 A253
A256 149 024 ?NC XQ ENCP00 0952 ; HP41 SYSTEM ROM 0
A258 0B0 C=N
A259 268 WRIT ( 9)Q
A25A 36D 08C 36D GOSUB LB_A76D A76D ; ?NC XQ 23DB, address in 2nd Quad
A25D 38C ?FSET 0
A25E 0C7 JC +18 LB_A276 A276
A25F 10C ?FSET 8
A260 03B JNC +07 LB_A267 A267
LB_A261 A261 388 SETF 0
A262 104 CLRF 8
A263 248 SETF 9
A264 365 08C 375 GOTO LB_A775 A775 ; ?NC XQ 23D9, address in 2nd Quad
LB_A267 A267 18C ?FSET 11
A268 077 JC +0E LB_A276 A276
A269 278 READ ( 9)Q
A26A 27C RCR 9
A26B 29C R= 7
A26C 04A C=0 R<-
A26D 13C RCR 8
A26E 0E8 WRIT ( 3)X
A26F 3B8 READ (14)d
A270 13C RCR 8
A271 3D8 C<>ST
A272 388 SETF 0
A273 3D8 C<>ST
A274 17C RCR 6
A275 3A8 WRIT (14)d
LB_A276 A276 3B8 READ (14)d
A277 23C RCR 2
A278 3D8 C<>ST
A279 365 08C 02D GOTO LB_A42D A42D ; ?NC XQ 23D9, address in 2nd Quad
Re: Fonction HPROMPT sur Module HEPAX
Bonjour Sylvain,
Eh bien merci pour cette belle réponse complète. J'ai maintenant de quoi faire !
Je débute en MCODE (mais pas en informatique
et j'investigue, j'apprends.
Merci encore
Jean-Michel
Eh bien merci pour cette belle réponse complète. J'ai maintenant de quoi faire !
Je débute en MCODE (mais pas en informatique

Merci encore
Jean-Michel