PB - 1000
 

 

Site Home

PB-1000 Home

Informations

Les codes ASM

La mémoire

Le Désassembleur

Les programmes

Le "Hardware"

 

LISTE DES CODES NON-DOCUMENTES du PB-1000

Un certain nombre de codes, d'après la documentation CASIO, ne semble être associé à aucune instruction. Or plusieurs de ces codes sont utilisés par le systeme d'exploitation du PB1000, montrant ainsi qu'il existe d'autres instructions que celles décrites par CASIO. Pourquoi CASIO ne les mentionne pas ? Mystère . . . ! Certaines sont d'ailleurs très utiles.

Voici donc la signification des 42 codes identifiés.

Remarques:

- pour comprendre les descriptions ci-dessous, il faut connaitre le symbolisme utilisé dans la doc du PB-1000.

- pour pouvoir utiliser ces instructions, il faut bien sur les coder à la main dans la mémoire puisque l'assembleur ne connait pas les mnémoniques.

&h24 et &h25: Store and Execute

&H24 : STE $c5,(IX +/- $c5)
&H25 : STE $c5,(IZ +/- $c5)

Stocke la valeur de $c5 dans l'adresse de IX ou IZ puis ajoute la valeur de $c5 à IX ou IZ.


&h2C et &h2D :Load and Execute

&H2C : LDE $c5,(IX +/- $c5)
&H2D : LDE $c5,(IZ +/- $c5)

Charge dans $c5 la valeur de l'adresse contenue dans IX ou IZ puis ajoute (ou retranche) $c5 à IX ou IZ.


&h50 et &h51

&H50 : ST ($0), c8
Stocke la donnée de 8 bits dans l'adresse contenue par $00.

&H51 : LD $c5 ,n
Charge la valeur n dans le registre $C5


&h64 et &h65 : Store and Execute

&H64 : STE $c5,(IX +/- n )
&H65 : STE $c5,(IZ +/- n )

Stocke les registres a partie de $C5 et les suivants à l'adresse contenue dans IX ou IZ puis ajoute n à IX ou IZ.


&h6C et &h6D

&H64 : LDE $c5,(IX +/- n )
&H65 : LDE $c5,(IZ +/- n )

Charge dans le registre $c5 et les suivants n octets depuis l'adresse contenue dans IX ou IZ puis ajoute n à IX ou IZ.


&hA4 et &hA5

&HA4 : STWE $c5,(IX +/- $c5 )
&HA5 : STWE $c5,(IZ +/- $c5 )

Stocke les données des 2 registres (Word) $c5 et $c5+1 à l'adresse contenue dans IX ou IZ puis ajoute (ou retranche) $c5 à IX ou IZ.

$c5, $c5+1, ... dans IX, IX-1, ...

Stores $C5,$c5+1 to IX or IZ adress then add $c5 to IX or IZ
$c5, $c5+1, ... dans IX, IX-1, ...


&hAC et &hAD

&HAC : LDWE $c5,(IX +/- $c5 )
&HAD : LDWE $c5,(IZ +/- $c5 )

Charge dans les registres $c5 et $c5+1 les données des adresses contenues dans IX ou IZ puis ajoute (ou retranche) $c5 à IX ou IZ.


Loads in $C5,$c5+1 value from IX or IZ adress then add $c5 to IX or IZ


&hC0 &hCF

inconnus.



&hDE

&hDE : JP ($c5)

Saute à l'adresse contenue dans le registre $c5.


&HE0 &HEF

Ces 16 instructions sont des instructions de type 5 (voir page de typage des instructions).

Codes de type 5 (sur 3 octets:1 octet de code - 2 octets de parametres)

Ces instructions permettent la manipulation d un certain nombre de registres en une seule instruction (recopie de valeur, initialisation, sauvegarde sur la pile, etc)

Les registres concernes sont indiques par le premier et le nombre de registres concernes.

Le nombre (entier) de registre concernes est indique par N/2+1 ou N est la valeur stockee dans le poids fort du 3 eme octet. Il faut evidemment prendre la partie entiere de cette valeur :

N=0 -> N/2+1=1 -> 1 seul registre
N=1 -> N/2+1=1.5 -> 1 seul registre
N=2 -> N/2+1=2 -> 2 registres

Ces instructions ressemblent respectivement aux instructions &h20 &h2F déjà définies mais en opérant sur plusieurs registres.


E0 : STN $c5,n,(IX+/-1)

[E0] - [xxx $c5] - [N xxxx] : STN $c5,N/2+1,(IX+/-1) :

Stocke N registres à l'adresse IX +/- 1.

STORE N Registers at IX+/-1 adress

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STN $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : STN $c5,N/2+1, (IX - 1)
[xxx $c5] [N xxxx] : STN $c5,N/2+1, (IX)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IX (eventuellement +/- 1).


E1 : STN $c5,n,(IZ+/-1)

[E1] - [xxx $c5] - [N xxxx] : STN $c5,N/2+1,(IZ+/-1) :

Stocke N/2+1 registres à l'adresse de IX +/-1 puis incremente IX.

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STN $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : STN $c5,N/2+1, (IZ - 1)
[xxx $c5] [N xxxx] : STN $c5,N/2+1, (IZ)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IZ (eventuellement +/- 1)


E2 : STNI $c5,n,(IX+/-1)

[E2] - [xxx $c5] - [N xxxx] : STNI $c5,N/2+1,(IX+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STNI $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : STNI $c5,N/2+1, (IX - 1)
[xxx $c5] [N xxxx] : STNI $c5,N/2+1, (IX)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IX (eventuellement +/- 1) et INCREMENTE IX.


E3 : STNI $c5,n,(IZ+/-1)

[E1] - [xxx $c5] - [N xxxx] : STN $c5,N/2+1,(IZ+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STN $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : STN $c5,N/2+1, (IZ - 1)
[xxx $c5] [N xxxx] : STN $c5,N/2+1, (IZ)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IZ (éventuellement +/- 1) et INCREMENTE IZ.


E4 : STND $c5,n,(IX+/-1)

[E4] - [xxx $c5] - [N xxxx] : STND $c5,N/2+1,(IX+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STND $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : STND $c5,N/2+1, (IX - 1)
[xxx $c5] [N xxxx] : STND $c5,N/2+1, (IX)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IX (éventuellement +/- 1) et DECREMENTE IX.


E5 : STND $c5,n,(IZ+/-1)

[E5] - [xxx $c5] - [N xxxx] : STND $c5,N/2+1,(IZ+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : STND $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : STND $c5,N/2+1, (IZ - 1)
[xxx $c5] [N xxxx] : STND $c5,N/2+1, (IZ)

Cette instruction enregistre N/2+1 registres depuis le registre $c5 à l'adresse indiquée par IZ (éventuellement +/- 1) et DECREMENTE IZ.


E6 : PHSN $c5 , N

[E6] - [xxx $c5] - [N xxxx] : PHSN $c5,N/2+1

Cette instruction sauve N/2+1 registres dans la pile systeme depuis $c5 par ordre DECROISSANT : $c5, $c5-1, ...


E7 : PHUN $c5 , N

[E7] - [xxx $c5] - [N xxxx] : PHUN $c5,N/2+1 : STORE N Registers in USER Stack

Cette instruction sauve N/2+1 registres dans la pile Utilisateur depuis $c5 par ordre DECROISSANT : $c5, $c5-1, ...


E8 : LDN $c5,n,(IX+/-1)

[E8] - [xxx $c5] - [N xxxx] : LDN $c5,N/2+1,(IX+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDN $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : LDN $c5,N/2+1, (IX - 1)
else [... $c5] [N xxxx] : LDN $c5,N/2+1, (IX)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IX (eventuellement +/- 1)


E9 : LDN $c5,n,(IZ+/-1)

[E9] - [xxx $c5] - [N xxxx] : LDN $c5,N/2+1,(IZ+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDN $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : LDN $c5,N/2+1, (IZ - 1)
else [... $c5] [N xxxx] : LDN $c5,N/2+1, (IZ)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IZ (eventuellement +/- 1).


EA : LDNI $c5,n,(IX+/-1)

[EA] - [xxx $c5] - [N xxxx] : LDNI $c5,N/2+1,(IX+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDNI $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : LDNI $c5,N/2+1, (IX - 1)
else [... $c5] [N xxxx] : LDNI $c5,N/2+1, (IX)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IX (eventuellement +/- 1) et Incremente IX.


EB : LDNI $c5,n,(IZ+/-1)

[EB] - [xxx $c5] - [N xxxx] : LDNI $c5,N/2+1,(IZ+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDNI $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : LDNI $c5,N/2+1, (IZ - 1)
else [... $c5] [N xxxx] : LDNI $c5,N/2+1, (IZ)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IZ (eventuellement +/- 1) et Incremente IZ.


EC : LDND $c5,n,(IX+/-1)

[EC] - [xxx $c5] - [N xxxx] : LDND $c5,N/2+1,(IX+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDND $c5,N/2+1, (IX + 1)
[101 $c5] [N xxxx] : LDND $c5,N/2+1, (IX - 1)
else [... $c5] [N xxxx] : LDND $c5,N/2+1, (IX)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IX (eventuellement +/- 1) et Décremente IX.

$c5, $c5-1, ... initialises avec IX, IX-1, ...


ED : LDND $c5,n,(IZ+/-1)

[ED] - [xxx $c5] - [N xxxx] : LDND $c5,N/2+1,(IZ+/-1)

Signification des bits des octets 2 et 3:
[001 $c5] [N xxxx] : LDND $c5,N/2+1, (IZ + 1)
[101 $c5] [N xxxx] : LDND $c5,N/2+1, (IZ - 1)
else [... $c5] [N xxxx] : LDND $c5,N/2+1, (IZ)

Cette instruction initialise N/2+1 registres depuis le registre $c5 avec les valeurs du contenu des adresses indiquées par IZ (eventuellement +/- 1) et Décremente IZ.

$c5, $c5-1, ... initialises avec IZ, IZ-1, ...


EE : PPSN $c5,n,(IX+/-1)

[EE] - [xxx $c5] - [N xxxx] : PHSN $c5,N/2+1

Cette instruction depile N/2+1 registres depuis la pile systeme dans $c5 par ordre CROISSANT : $c5, $c5+1, ...


EF : PPUN $c5,n,(IZ+/-1)

[EF] - [xxx $c5] - [N xxxx] : PPUN $c5,N/2+1

POP N Registers from USER Stack

Cette instruction depile N/2+1 registres depuis la pile Utilisateur dans $c5 par ordre CROISSANT : $c5, $c5+1, ...

 

 


Airbug.two 2002