Skip to content

Commit

Permalink
Corrigé bogue dans set_seed ajout de RANDOMIZE
Browse files Browse the repository at this point in the history
  • Loading branch information
Picatout committed Jul 12, 2023
1 parent 4fbbb4e commit 5571a68
Show file tree
Hide file tree
Showing 7 changed files with 354 additions and 339 deletions.
Binary file modified build/stm8s207k8/pomme_1.bin
Binary file not shown.
636 changes: 318 additions & 318 deletions build/stm8s207k8/pomme_1.ihx

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions code_address.asm
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,5 @@ code_addr:
_code_entry cmd_load,LOAD_IDX
_code_entry cmd_dir, DIR_IDX
_code_entry cmd_erase, ERASE_IDX
_code_entry cmd_randomize, RNDMIZE_IDX
CMD_LAST=TOK_IDX-1
11 changes: 11 additions & 0 deletions journal.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
### 2023-07-11

* Corrigé bogue dans routine *set_seed* du fichier [p1Kernel.asm](p1Kernel.asm).

* Travail sur [files.asm](files.asm). Ajout des commandes
* "SAVE "file name"
* "LOAD "file name"
* "ERASE "file name" || \F
* "DIR"

Les fichiers sont sauvegardés dans la mémoire SPI EEPROM 25LC1024 de 128KO. La taille de l'unité d'allocation des fichiers étant de 256 octets un maximum de 512 fichiers peuvent-être sauvegardés et un minimum de 21 à supposé que chacun de ses programme occupe toute la mémoire RAM disponible (5504 octests),


* Corrigé bogue dans *and_factor*.

* Ajout de la fonction **KEY**.
Expand Down
1 change: 1 addition & 0 deletions p1Basic.asm
Original file line number Diff line number Diff line change
Expand Up @@ -4034,6 +4034,7 @@ dict_end:
_dict_entry,4,"SAVE",SAVE_IDX
_dict_entry 3,"RUN",RUN_IDX
_dict_entry,3,"RND",RND_IDX
_dict_entry,9,"RANDOMIZE",RNDMIZE_IDX
_dict_entry,6,"RETURN",RET_IDX
_dict_entry 3,"REM",REM_IDX
_dict_entry 5,"PRINT",PRINT_IDX
Expand Down
2 changes: 1 addition & 1 deletion p1Kernel.asm
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ set_seed:
ldw x,tib
_strxz seedy
ret
1$: ldw x,ticks
1$:
_strxz seedx
ldw x,0x6000
_strxz seedy
Expand Down
42 changes: 22 additions & 20 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,9 @@ J'ai nommé le fichier principal de ce projet [stm8_WozBASIC.asm](stm8_WozBASIC.
Le nom que j'ai choisi pour ce projet révèle un certain penchant pour l'humour absurde.


## 2023-06-12 Spaghetti!!

Après avoir passé quelques heures à essayer de comprendre le code source du fichier [a1basic](https://github.com/brouhaha/a1basic/) j'en suis venu à la conclusion qu'il m'en faudrait encore beaucoup plus pour le comprendre, malgré les commentaires ajoutés par Eric Smith. C'est du spaghetti ce code.

Il faut dire à la décharge de Woz que les outils et les contraintes de l'époque n'étaient pas les même que celles d'aujourd'hui. La mémoire coûtait cher et le Apple I n'en possédait que 4Ko. Mon interpréteur STM8 TinyBASIC nécessite plus de 8Ko. À l'époque le code spaghetti était coutumier. Question de sauver le plus d'octets possible les programmeurs faisaient toutes sortes de pirouettes, comme des sauts au milieu d'une sous-routine d'un point extérieur à la sous-routine, des *fallthrough* d'une routine à l'autre, etc. Saut avant, saut arrière à peu près n'importe où du moment qu'un morceau de code pouvait-être réutilisé.

Un peu découragé par ce spaghetti, j'a pris une pause pour faire des recherches supplémentaires et voilà que je suis tombé sur un [article de Gizmodo](https://gizmodo.com/how-steve-wozniak-wrote-basic-for-the-original-apple-fr-1570573636) dans lequel Steve Wozniak lui-même explique sa totale ignorance des compilateurs. Il ne conaîssait que la première partie, celle qu'on apprend au tout début du cours sur les compilateurs, ç'est à dire la construction de l'arbre syntaxique du langage. Pour le reste il a imaginé ses propres solutions. C'est pourquoi çi-haut j'ai rayé le mot *compétence* pour le remplacer par le mot débrouillardise.


J'ai donc décidé que le plus simple est de cloner [STM8_tbi](https://github.com/Picatout/stm8_tbi) et de le modifier en Apple BASIC. Apple BASIC utilise
l'arithmétique sur entier de 16 bits alors que STM8_tbi utilise l'arithmétique sur entiers de 24 bits. Mais il y a déjà un fihcier [arithm16.asm](arithm16.asm) dans le projet [STM8_tbi](https://github.com/Picatout/stm8_tbi).


## 2023-07-11

La version 1.0 de POMME BASIC est maintenant complétée. Elle comprend 49 mots réservés.
La version 1.0 de POMME BASIC est maintenant complétée. Elle comprend 50 mots réservés.
```
>WORDS
ABS AND AUTO BYE
Expand All @@ -40,12 +27,12 @@ HIMEM IF INPUT KEY
LEN LET LIST LOAD
LOMEM MOD NEXT NEW
NOT OR PEEK POKE
PRINT REM RETURN RND
RUN SAVE SCR SGN
SLEEP STEP STOP TAB
THEN TICKS TO TONE
WORDS
49 words in dictionary
PRINT REM RETURN RANDOMIZE
RND RUN SAVE SCR
SGN SLEEP STEP STOP
TAB THEN TICKS TO
TONE WORDS
50 words in dictionary
```

Les programme BASIC sont sauvegardés dans une mémoire EEPROM externe de **128K** **25LC1024**. Les commandes de fichiers sont les suivantes:
Expand All @@ -63,4 +50,19 @@ Inclusion des fichiers du projet [STM8_tbi](https://github.com/Picatout/stm8_tbi
Maintenant reste à faire la modification du BASIC pour le rende conforme à Apple BASIC au niveau du code source. Aucune tentative de compatibilité au niveau des programmes *tonenizés* ne sera faite.


## 2023-06-12 Spaghetti!!

Après avoir passé quelques heures à essayer de comprendre le code source du fichier [a1basic](https://github.com/brouhaha/a1basic/) j'en suis venu à la conclusion qu'il m'en faudrait encore beaucoup plus pour le comprendre, malgré les commentaires ajoutés par Eric Smith. C'est du spaghetti ce code.

Il faut dire à la décharge de Woz que les outils et les contraintes de l'époque n'étaient pas les même que celles d'aujourd'hui. La mémoire coûtait cher et le Apple I n'en possédait que 4Ko. Mon interpréteur STM8 TinyBASIC nécessite plus de 8Ko. À l'époque le code spaghetti était coutumier. Question de sauver le plus d'octets possible les programmeurs faisaient toutes sortes de pirouettes, comme des sauts au milieu d'une sous-routine d'un point extérieur à la sous-routine, des *fallthrough* d'une routine à l'autre, etc. Saut avant, saut arrière à peu près n'importe où du moment qu'un morceau de code pouvait-être réutilisé.

Un peu découragé par ce spaghetti, j'a pris une pause pour faire des recherches supplémentaires et voilà que je suis tombé sur un [article de Gizmodo](https://gizmodo.com/how-steve-wozniak-wrote-basic-for-the-original-apple-fr-1570573636) dans lequel Steve Wozniak lui-même explique sa totale ignorance des compilateurs. Il ne conaîssait que la première partie, celle qu'on apprend au tout début du cours sur les compilateurs, ç'est à dire la construction de l'arbre syntaxique du langage. Pour le reste il a imaginé ses propres solutions. C'est pourquoi çi-haut j'ai rayé le mot *compétence* pour le remplacer par le mot débrouillardise.


J'ai donc décidé que le plus simple est de cloner [STM8_tbi](https://github.com/Picatout/stm8_tbi) et de le modifier en Apple BASIC. Apple BASIC utilise
l'arithmétique sur entier de 16 bits alors que STM8_tbi utilise l'arithmétique sur entiers de 24 bits. Mais il y a déjà un fihcier [arithm16.asm](arithm16.asm) dans le projet [STM8_tbi](https://github.com/Picatout/stm8_tbi).





0 comments on commit 5571a68

Please sign in to comment.