Logicielsmoto.com

Nous sommes le 28 Mar 2024, 22:01

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
MessagePosté: 24 Fév 2022, 15:58 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Bonjour à tous,

je suis en train de faire un petit programme en assembleur qui sera chargé de faire l'équivalent (ou presque) d'un LOADM en BASIC.

Dans l'ordre, j'ai réussi à
1- initialiser l'extramoniteur
2- initialiser le DOS avec les zone buffer secteur, FATs et FCB
3- ouvrir mon fichier
4- le parcourir (et afficher en hexa ce qui est lu : c'est correct)

Le problème c'est que j'arrive pas à arrêter la lecture

Code:
!   * lecture séquentielle des octets du fichier avec l'extramoniteur
    LDB #5
    JSR EXTRAMONITEUR
    LDA $6178       * ? EOF ?
    BNE >           * si pas egal à 0, on sort
    LDA $6196       * sinon on lit l'octet
    JSR PRINT_HEXA  * Affiche A à l'écran, en HEXA
    BRA <
!


C'est sensé passer le registre $6178 à qqch différent de 0 quand rien est à lire, mais c'est toujours à 0. Donc je sors pas de ma boucle.

J'ai lu cette article de Prehisto : http://collection.thomson.free.fr/code/ ... ?XI=0&XJ=4
Mais ça ne m'éclaire pas plus.

Une idée ?

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Fév 2022, 21:24 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Dans mes programmes asm (probablement "In the shadow of the Thomson") j’ai un bootblock qui charge un loader utilisant le minidos pour charger AUTO.BIN (au lieu du AUTO.BAS). L’avantage du minidos contrairement à l’extramon, c’est qu’il existe sur TO7 et est moins gourmand.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Fév 2022, 21:40 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
C'est ce que j'ai voulu faire ici.
C'est bien un bootloader qui charge un programme, qui lui va charger le reste.
Le but s'est d'éviter de charger le basic.

Mais je comprends pas que ma routine qui utilise l'extramoniteur ne fonctionne pas.
Quand j'ajoute le bootsecteur à ma disquette qui contient des fichiers, les fichiers ne sont plus listés par le gestionnaire de fichiers (menu 5 du TO8), alors qu'ils le sont bien si je n'ajoute pas le bootsecteur

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Dernière édition par fxrobin le 25 Fév 2022, 09:57, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Fév 2022, 21:55 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Tu as bien marqué le bootblock dans la FAT ?

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 10:04 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Samuel Devulder a écrit:
Tu as bien marqué le bootblock dans la FAT ?

Non pas encore. Je pensais que ça n'aurait pas de conséquence tant que je n'ajoute pas de fichiers et que les secteurs que j'occupe sur la piste 0, secteur 1 à 4, ne sont pas pris dans la FAT.

Mon principe est le suivant :
1- je prends une disquette déjà existante avec des fichiers BIN dessus, qu'il y aura à lire pour monter en mémoire
2- j'y colle mon bootsector + programme. Mon bootsector se charge en $6200, qui charge mon programme en $6300 et que le lance. Mon programme est sur les secteurs 2,3,4 (j'ai vu large pour le moment)
3- mon programme détient la liste des BIN à charger et la banque de destination pour chacun d'entre eux.

Quand j'analyse les deux disquettes (avec un prog Java) :

La disquette originale sans mon BOOT :

Code:
BOOTSECTOR DATA
---------------
0000 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0010 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0020 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0030 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0040 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0050 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0060 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0070 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0080 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
0090 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00A0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00B0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00C0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00D0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00E0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |
00F0 | E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5  E5 E5 E5 E5 | ................ |

FAT DAT
-------
0000 | 00 FF FF FF  FF FF FF FF  FF FF C5 09  C8 0B 0A 0D | ................ |
0010 | 0E C8 C1 11  12 13 14 15  16 17 18 10  1A 1B 1C 1D | ................ |
0020 | 1E C1 1F C3  C3 25 C5 C6  24 FE FE C4  C8 C8 2C 2D | .....%..$.....,- |
0030 | 2E 2F 30 31  32 C1 0F C8  36 37 38 C4  C8 3B 3C 3D | ./012...678..;<= |
0040 | 3E 3F 40 41  C8 43 44 45  46 47 48 49  C3 4B 4C 4D | >?@A.CDEFGHI.KLM |
0050 | 4E 4F 52 53  54 55 56 57  58 C8 C1 5B  5C 5D 5E 5F | NORSTUVWX..[\]^_ |
0060 | 60 8E 62 63  64 65 66 67  C6 69 6A 6B  6C 6D 6E 6F | `.bcdefg.ijklmno |
0070 | C5 C5 72 73  C3 75 76 77  78 79 7A 7B  7C C1 7E 7F | ..rs.uvwxyz{|.~. |
0080 | 80 81 82 83  84 C6 86 87  88 89 8A 8B  8C 8D C1 C8 | ................ |
0090 | 91 C8 92 93  94 95 96 97  C7 FF FF FF  FF FF FF FF | ................ |
00A0 | FF 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00B0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00C0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00D0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00E0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00F0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |

CATALOG DATA
------------
SPRITES    BIN   2   BINARY   Blocks : 50 -> 4E -> 4C -> C3
BEGIN      BIN   2   BINARY   Blocks : 27 -> C6
AUTO       BAT   0   BINARY   Blocks : 26 -> C5
CHOMP      BIN   2   BINARY   Blocks : 2A -> FE -> 00
DEATH      BIN   2   BINARY   Blocks : 2B -> C4
EAFRUIT    BIN   2   BINARY   Blocks : 22 -> 1F -> 1D -> 1B -> 10 -> 0E -> 0A -> C5
EAGHOST    BIN   2   BINARY   Blocks : 23 -> C3
K          BAS   0   BINARY   Blocks : 34 -> 32 -> 30 -> 2E -> 2C -> C8
LEVEL1     BIN   2   BINARY   Blocks : 51 -> 4F -> 4D -> 4B -> 49 -> 47 -> 45 -> 43 -> 41 -> 3F -> 3D -> 3B -> C4
LEVEL1F2   BIN   2   BINARY   Blocks : 5A -> C1
LEVEL1A    BIN   2   BINARY   Blocks : 4A -> 48 -> 46 -> 44 -> C8
LEVEL1A    BAS   0   BINARY   Blocks : 20 -> 1E -> 1C -> 1A -> 18 -> 16 -> 14 -> 12 -> C1
CREDITS    BIN   2   BINARY   Blocks : 42 -> 40 -> 3E -> 3C -> C8
PACSND2    BIN   2   BINARY   Blocks : 59 -> C8
PACFONT    BIN   2   BINARY   Blocks : 3A -> 38 -> 36 -> 0F -> 0D -> 0B -> 09 -> FF -> 00
LOOP1      BIN   2   BINARY   Blocks : 61 -> 8E -> C1
LEVEL1F    BIN   2   BINARY   Blocks : 33 -> 31 -> 2F -> 2D -> C8
LOOP2      BIN   2   BINARY   Blocks : 68 -> C6
SPLASH3    BIN   2   BINARY   Blocks : 21 -> C1
DATLEV1    BIN   2   BINARY   Blocks : 70 -> C5
LOOP3      BIN   2   BINARY   Blocks : 8F -> C8
DATLEV1B   BIN   2   BINARY   Blocks : 71 -> C5
LOOP21     BIN   2   BINARY   Blocks : 74 -> C3
LOOP22     BIN   2   BINARY   Blocks : 7D -> C1
EATTEN2    BIN   2   BINARY   Blocks : 90 -> 91 -> C8
OUT0       BIN   2   BINARY   Blocks : 85 -> C6
OUT1       BIN   2   BINARY   Blocks : 19 -> 17 -> 15 -> 13 -> 11 -> C8
READY      BIN   2   BINARY   Blocks : 39 -> 37 -> C8
PACMAN2    BIN   2   BINARY   Blocks : 35 -> C1
GAMEOVER   BIN   2   BINARY   Blocks : 0C -> C8



et la version, une fois que j'ai collé mon BOOT :

Code:
BOOTSECTOR DATA
---------------
0000 | 7A A0 E1 75  42 00 E2 51  1C 72 9D 00  61 B1 7A FE | z..uB..Q.r..a.z. |
0010 | 69 B8 3A FE  29 B4 7A FC  43 18 D6 DB  F5 F4 B1 F4 | i.:.).z.C....... |
0020 | B4 B6 DA 0C  82 9D 00 C7  00 00 00 00  00 00 00 00 | ................ |
0030 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
0040 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
0050 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
0060 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
0070 | 00 00 00 00  00 00 00 00  42 41 53 49  43 32 00 AB | ........BASIC2.. |
0080 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
0090 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00A0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00B0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00C0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00D0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00E0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00F0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |

FAT DAT
-------
0000 | 00 FF FF FF  FF FF FF FF  FF FF C5 09  C8 0B 0A 0D | ................ |
0010 | 0E C8 C1 11  12 13 14 15  16 17 18 10  1A 1B 1C 1D | ................ |
0020 | 1E C1 1F C3  C3 25 C5 C6  24 FE FE C4  C8 C8 2C 2D | .....%..$.....,- |
0030 | 2E 2F 30 31  32 C1 0F C8  36 37 38 C4  C8 3B 3C 3D | ./012...678..;<= |
0040 | 3E 3F 40 41  C8 43 44 45  46 47 48 49  C3 4B 4C 4D | >?@A.CDEFGHI.KLM |
0050 | 4E 4F 52 53  54 55 56 57  58 C8 C1 5B  5C 5D 5E 5F | NORSTUVWX..[\]^_ |
0060 | 60 8E 62 63  64 65 66 67  C6 69 6A 6B  6C 6D 6E 6F | `.bcdefg.ijklmno |
0070 | C5 C5 72 73  C3 75 76 77  78 79 7A 7B  7C C1 7E 7F | ..rs.uvwxyz{|.~. |
0080 | 80 81 82 83  84 C6 86 87  88 89 8A 8B  8C 8D C1 C8 | ................ |
0090 | 91 C8 92 93  94 95 96 97  C7 FF FF FF  FF FF FF FF | ................ |
00A0 | FF 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00B0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00C0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00D0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00E0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |
00F0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | ................ |

CATALOG DATA
------------
SPRITES    BIN   2   BINARY   Blocks : 50 -> 4E -> 4C -> C3
BEGIN      BIN   2   BINARY   Blocks : 27 -> C6
AUTO       BAT   0   BINARY   Blocks : 26 -> C5
CHOMP      BIN   2   BINARY   Blocks : 2A -> FE -> 00
DEATH      BIN   2   BINARY   Blocks : 2B -> C4
EAFRUIT    BIN   2   BINARY   Blocks : 22 -> 1F -> 1D -> 1B -> 10 -> 0E -> 0A -> C5
EAGHOST    BIN   2   BINARY   Blocks : 23 -> C3
K          BAS   0   BINARY   Blocks : 34 -> 32 -> 30 -> 2E -> 2C -> C8
LEVEL1     BIN   2   BINARY   Blocks : 51 -> 4F -> 4D -> 4B -> 49 -> 47 -> 45 -> 43 -> 41 -> 3F -> 3D -> 3B -> C4
LEVEL1F2   BIN   2   BINARY   Blocks : 5A -> C1
LEVEL1A    BIN   2   BINARY   Blocks : 4A -> 48 -> 46 -> 44 -> C8
LEVEL1A    BAS   0   BINARY   Blocks : 20 -> 1E -> 1C -> 1A -> 18 -> 16 -> 14 -> 12 -> C1
CREDITS    BIN   2   BINARY   Blocks : 42 -> 40 -> 3E -> 3C -> C8
PACSND2    BIN   2   BINARY   Blocks : 59 -> C8
PACFONT    BIN   2   BINARY   Blocks : 3A -> 38 -> 36 -> 0F -> 0D -> 0B -> 09 -> FF -> 00
LOOP1      BIN   2   BINARY   Blocks : 61 -> 8E -> C1
LEVEL1F    BIN   2   BINARY   Blocks : 33 -> 31 -> 2F -> 2D -> C8
LOOP2      BIN   2   BINARY   Blocks : 68 -> C6
SPLASH3    BIN   2   BINARY   Blocks : 21 -> C1
DATLEV1    BIN   2   BINARY   Blocks : 70 -> C5
LOOP3      BIN   2   BINARY   Blocks : 8F -> C8
DATLEV1B   BIN   2   BINARY   Blocks : 71 -> C5
LOOP21     BIN   2   BINARY   Blocks : 74 -> C3
LOOP22     BIN   2   BINARY   Blocks : 7D -> C1
EATTEN2    BIN   2   BINARY   Blocks : 90 -> 91 -> C8
OUT0       BIN   2   BINARY   Blocks : 85 -> C6
OUT1       BIN   2   BINARY   Blocks : 19 -> 17 -> 15 -> 13 -> 11 -> C8
READY      BIN   2   BINARY   Blocks : 39 -> 37 -> C8
PACMAN2    BIN   2   BINARY   Blocks : 35 -> C1
GAMEOVER   BIN   2   BINARY   Blocks : 0C -> C8


J'ai bien l'intention de marquer le premier bloc comme réservé dans la FAT, ce que je n'ai pas encore fait.
Penses-tu que cela ait un impact sur la lecture du BIN et sa "non détection de fin" ?

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 11:39 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Difficile de savoir s’il y a un impacte, mais dans tous les cas ca élimine une hypothèse.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 14:08 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Bon, ça marche :W :coolfuck:

En fait j'avais mal calculé de tête mes adresses pour le BUFFER secteur, les FATs et le(s) FCB.
Du coup, il y a un endroit où ça se chevauchait : erreur de débutant.

J'en ai profité pour reprendre le code de Préhisto issu de paragraphe pour la lecture "rapide" en séquentiel pour lire à la place de l'extramoniteur.
Et tout fonctionne nickel.

L'init de l'extramoniteur et du DOS
Code:
INIT_EXTRA_MONITEUR

    * init à froid
    LDB #EXT_INIT_COLD
    JSR EXTRAMONITEUR

    * init DOS

DOS_BUFFER EQU $6600                * adresse du buffer de 256 octets pour la lecture des secteurs. On décide $6600   
DOS_FAT    EQU DOS_BUFFER+$0100     * adresse pour les FATs (5x166) = 830 octets = $033E. plage $6600 -> $693E
DOS_FCB    EQU DOS_FAT+$033E        * adresse pour indisquer 281 octets suivant pour le stockage de FCB (File Control Bloc) * 1 seul fichier ouvert

    LDX #DOS_BUFFER     
    STX $6197           * register pour indiquer l'adresse du buffer
    LDX #DOS_FAT       
    STX $6199           * register pour indiquer l'adresse de stockage des 5 FATs
    LDY #$01            * on utilise seulement la première face de la première disquette
    LDA #$01            * un seul fichier ouvert
    LDX #DOS_FCB       
    LDB #2              * call FCBINI
    JSR EXTRAMONITEUR
    RTS


je passe sur l'ouverture de fichier, etc.

Le parcours du fichier et son affichage (avec le système de boucles de LWASM avec "!" (début et fin de boucle) "<" (boucler) et ">" (sortir de la boucle).

Code:
BYTE_PACKET EQU 8     * affichage des octets par paquet de 8 à l'écran puis retour à la ligne

    LDB #5
    JSR EXTRAMONITEUR * on lit le premier octet (le premier secteur du fichier) avec l'extramoniteur
    LDB #BYTE_PACKET
!     
    LDA $6178       * ? EOF ?
    BNE >           * si pas egal à 0, on sort
    LDA $6196       * sinon on lit l'octet
    JSR PRINT_HEXA  * on l'affiche
    PCHAR #$20      * on ajoute un espace à l'écran
    JSR READ_BYTE   * on avance dans le buffer qui charge automatiquement les secteurs suivants

    DECB                * pour produire un retour
    BNE <               * à la ligne
    JSR CR_LF           * tous les
    LDB #BYTE_PACKET    * #BYTE_PACKET = 8

    BRA <
!



et enfin la lecture octet par octes, directement dans le buffer comme indiqué par le post de préhisto, avec le chargement délégué à l'extramoniteur quand on arrive en fin de data du buffer.

Code:
FCBPTR EQU DOS_FCB          * pointeur vers le FCB du dernier fichier ouvert
 
READ_BYTE
    PSHS   X,B               
    LDX    #FCBPTR+$10      *   Pointeur sur le FCB courant (+$10)
    LDB    $07,X            *   Si pas de donnée à lire dans le secteur ?
    BNE    EXIT             *   fin de la lecture
    LDB    $08,X            *   Si la fin du secteur
    DECB                    *   est atteinte,
    BEQ    READ_NEXT_SECTOR *   charge un nouveau secteur
    STB    $08,X            *   Sauve le décompteur de données
    LDB    -$0B,X           *   Récupère l'offset sur la donnée courante
    INC    -$0B,X           *   Incrémente l'offset sur la donnée courante
    ABX                     *   Calcule le pointeur sur la donnée courante
    LDB    $0B,X            *   Lit la donnée courante
    STB    $6196            *   On la met dans le registre adhoc
    PULS   B,X,PC           *   On sort (RTS) 
READ_NEXT_SECTOR
    LDB    #$05            * Lit la donnée suivante (le secteur
    JSR    EXTRAMONITEUR   * suivant, en fait) par l'ExtraMoniteur
    LDB    $6178           * Si pas de secteur chargé,
    BNE    EXIT            * fin de la lecture
    PULS   B,X,PC          * On sort (RTS)
EXIT
    * NO DATA
    LDB    #$FF   * END_OF_FILE Flag
    STB    $6178  * Register for END_OF_FILE
    PULS   B,X,PC


Donc tout fonctionne, je peux continuer :-) Merci pour ton aide, Sam.


Fichiers joints:
Sélection_061.png
Sélection_061.png [ 7.29 Kio | Vu 7110 fois ]
Sélection_062.png
Sélection_062.png [ 19.26 Kio | Vu 7110 fois ]

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr
Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 15:59 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Il y a un truc qui me chiffonne. Quand on passe par READ_NEXT_SECTOR, on sort direct sans rien écrire en $6196. Du coup d’où sort la valeur lue en cas de changement de secteur?

Sur la photo on voit moins de 255/256 octets, donc on ne voit pas le problème, mais je soupçonne un truc dans la logique du code. Pour moi il faudrait lire le 1er octet du nouveau secteur et l’écrire en $6196, mais’peut être que le moniteur fait cela implicitement. Jje ne sais pas, mais j’y crois peu.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 16:21 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
oui l'extramoniteur le fait implicitement de placer l'octet lu dans le registre $6196, pas besoin de le mettre à la main.
Je le mets à la main plus haut, car je parcours le buffer moi-même.
Si j'appelais l'extramoniteur à la place, il le ferait tout seul.


Fichiers joints:
Sélection_065.png
Sélection_065.png [ 42.92 Kio | Vu 7105 fois ]

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr
Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Fév 2022, 17:02 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ah oui tu passes à la lecture du prochain octet classique qui met à jour toutes les données. Donc c’est "lent" tous les 255 octets et rapide en exploitant directement les données en mémoire le reste du temps.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 26 Fév 2022, 10:43 
Hors ligne

Inscription: 12 Fév 2021, 15:54
Messages: 78
Localisation: Rennes
Oui, c'est ça.
J'ai rien inventé, j'ai repiqué la routine "paragraphe" évoqué sur l'article de Prehisto.
Mais comme c'était un extrait, il manquait des étiquettes (notamment celle de sortie)

_________________
Fan de Atari 2600, Thomson MO5, Thomson TO8, Atari STE.
Retro-Codeur à mes heures perdues. https://www.fxjavadevblog.fr


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 36 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com