Page 1 sur 1

Fonction HPROMPT sur Module HEPAX

Publié : dim. 8 juin 2025 10:47
par johnvax
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 !!

Re: Fonction HPROMPT sur Module HEPAX

Publié : lun. 9 juin 2025 13:35
par pcscote
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

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
PS2: exemple de décompilation de ROMHandler

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         
PS3: décompilation partielle de la fonction HPROMPT

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