Oui mais avoir un assembleur c'est bien Oh oui ! Mais un sourceur c'est encore mieux
Profitant de toutes les possibilites offertes par nsimII qui "explose" completement la FAT (la table des instructions, ie, XTOA, ATOX, PRA, ...), j'ai enfin developpe mon sourceur. Integre dans nsimII, il recompose le code assembleur (labels, instructions,...) et produit ainsi un fichier source qui pourra etre reassemble par mon assembleur (et dans certains cas, c'est meme compatible avec A41 )
On passe donc du fichier image binaire .ROM d'une page a un fichier texte .SRC !
Code : Tout sélectionner
image.ROM -->sourceur nsimII (commande S)--> texte.SRC --> assembleur 2-passes nsimII (command A) --> image.ROM
La version de nsimII-0.20.0 integrant ces 2 dernieres commandes est en cours de tests (encore 1 ou 2 nuits blanches ce week-end).
Et voici donc, une partie de l'HPILDEVU-1A source par nsimII:
Code : Tout sélectionner
*
* Local variables
*
*
* Sourced file
*
*
* Orphaned symbols
*
*
* Start of FAT
*
.OPENFAT 24
; AUTOFAT: Found 21 FCNS. Reserved 2C bytes for FAT
; XROM 24,4294967295
; XROM 24, 0 ---
; XROM 24, 1 AND
; XROM 24, 2 ASIZE?
; XROM 24, 3 A-XL
; XROM 24, 4 A-XR
; XROM 24, 5 A-XX
; XROM 24, 6 BININ
; XROM 24, 7 BINVIEW
; XROM 24, 8 BIT?
; XROM 24, 9 HEXIN
; XROM 24,10 HEXVIEW
; XROM 24,11 NOT
; XROM 24,12 OR
; XROM 24,13 OCTIN
; XROM 24,14 OCTVIEW
; XROM 24,15 ROMCHKX
; XROM 24,16 ROTXY
; XROM 24,17 XOR
; XROM 24,18 X-AL
; XROM 24,19 X-AR
; XROM 24,20 Y-AX
*
* End of FAT
*
.ORG 002C
NOP
NOP
.NAME "---"
.ENTRY 0 ; XROM 24, 0 A6:00
(x_HPILDEVU-1A_---)
RTN
.NAME "HEXIN"
.ENTRY 9 ; XROM 24, 9 A6:09
(x_HPILDEVU-1A_HEXIN)
SF 9
LDI 008
JNC (l_HPILDEVU-1A_904B) ; 904B
.NAME "OCTIN"
.ENTRY 13 ; XROM 24,13 A6:0D
(x_HPILDEVU-1A_OCTIN)
LDI 00F
JNC (l_HPILDEVU-1A_904A) ; 904A
.NAME "BININ"
.ENTRY 6 ; XROM 24, 6 A6:06
(x_HPILDEVU-1A_BININ)
LDI 002
(l_HPILDEVU-1A_904A)
CF 9
(l_HPILDEVU-1A_904B)
B<>C X
C=REGN 14 ; 'd'
RCR 1
ST=C
CF 3
?FS 13
JC (l_HPILDEVU-1A_9054) ; 9054
?FS 0
. . .
C=G
REGN=C 8 ; 'P'
RTN
.NAME "X-AR"
.ENTRY 19 ; XROM 24,19 A6:13
(x_HPILDEVU-1A_X-AR)
NCXQREL (l_HPILDEVU-1A_9464) ; 9464
NCGO [APNDNW] ; 2D14
NOP
NOP
NOP
NOP
.NOPS 1754 ; NOPs 991A .. 9FF3
.ORG 0FF4 ; Vectors table
NOP ; Pause Loop
NOP ; Main Running Loop
NOP ; Deep Sleep Wake Up With No Key Down
NOP ; Power Off
NOP ; I/O Service
NOP ; Deep Sleep Wake Up
NOP ; Cold Start
.ROMID BF-1A
.CLOSEFAT
.CHECKSUM ; #327
.END
*
* End of file
*
Code : Tout sélectionner
> I HPILDEV
MODULE 'HPILDEV' IN PAGE 8/0
FAT XROM 22 FCNS 62 ROM-ID 'PD-1B' CHECKSUM 287 (287) OK [COMPUTED 287]
MODULE 'HPILDEV' IN PAGE 9/0
FAT XROM 24 FCNS 21 ROM-ID 'BF-1A' CHECKSUM 327 (327) OK [COMPUTED 327]
> S 9 +n +autofat
Sourcing page 9/0 module 'HPILDEV' to file "SRC/HPILDEVU-1A.SRC"
> Z DEVIL DEVL
Create a new RAM page 'DEVL' to 8/0
MODULE 'DEVIL' IN PAGE A/0
Empty FAT assumed
> Z DEVIL DEVU
Create a new RAM page 'DEVU' to 9/0
Wrote page A/0 name 'DEVL@A_0' to file "ROM/DEVL@A_0.ROM"
MODULE 'DEVIL' IN PAGE A/0
Empty FAT assumed
MODULE 'DEVIL' IN PAGE B/0
Empty FAT assumed
> A b HPILDEVU-1A
Reading source page B/0 module 'DEVIL' from file "SRC/HPILDEVU-1A.SRC"
MODULE 'DEVIL' IN PAGE B/0
FAT XROM 24 FCNS 21 ROM-ID 'BF-1A' CHECKSUM 188 (188) OK [COMPUTED 327]
Assembler completed :-)
_END at BFFB
CHECKSUM 327
MODULE 'DEVIL' IN PAGE B/0
FAT XROM 24 FCNS 21 ROM-ID 'BF-1A' CHECKSUM 327 (327) OK [COMPUTED 327]
COMPUTED CKSM 327
Bien sur le FOCAL est aussi decompile, mais je n'ai pas encore de "compilateur FOCAL"
Code : Tout sélectionner
.UCODE
.ORG 0036
#04D ; .END. AT +538 6250
#260
#1C8 ; 0001 LBL "PRPLOT"
#000
#0F7
#000
#050
#052
#050
#04C
#04F
#054
#18C ; 0002 AON
#1F6 ; 0003 "NAME ?"
#04E
#041
#04D
#045
#020
#03F
#18E ; 0004 PROMPT
#18B ; 0005 AOFF
#19A ; 0006 ASTO 11
#00B
#10C ; 0007 LBL 11
#1F7 ; 0008 "Y MIN ?"
#059
#020
#04D
#049
#04E
#020
#03F
#18E ; 0009 PROMPT
#130 ; 0010 STO 00
#1F7 ; 0011 "Y MAX ?"
#059
#020
#04D
#041
#058
#020
#03F
#18E ; 0012 PROMPT
#131 ; 0013 STO 01
#146 ; 0014 X<=Y?
#1BC ; 0015 GTO 11
#018