CODINGAMSLIVE ★ AMSLIVE N°07 - HAPPY DRIVERS : LES RSX AMSDOS ★

AMSLIVE n°07 - HAPPY DRIVERS : LES RSX AMSDOSCoding Amslive
Plus de concret moins de blabla ? Voici quelques routines afin d'expérimenter par vous-même le monde fabuleux du DOS.

Toujours tout prévoir. Que KL_FIND_COMMAND ne trouve pas votre RSX est peu probable si vous avez bien initialisé la ROM. Mais sait-on jamais ? Mieux vaut un message d'erreur qu'un plantage, surtout si c'est un plantage à retardement.

Pour les opérations disque, c'est encore plus évident : vous ne pouvez pas certifier qu'il y aura bien une disquette dans le lecteur, formatée, en bon état, etc. S'il y a eu erreur, le Carry sera faux. Quant à repérer de quelle erreur il s'agit, ça sera l'objet d'un autre article. Le rhum ne se fait pas en 1 jour.

PETITE REMARQUE

Une fois la RSX trouvée, le nom ne sert plus à rien. On pourrait donc l'écraser en réutilisant l'octet pour stocker le poids faible de l'adresse. Mais ceci engendrerait un plantage si vous réexécutez votre programme sans le réassembler. On place donc l'adresse et le numéro de ROM à côté (DEFS 3), tout proprement. Mais attention à l'appel de la routine (RD_SECT+1 et non pas RD_SECT).

LOST PATROL

Pour lire un secteur, il faut préciser son "nom". Je ne parle pas de numéro : &C1 (=193) n'est pas le 194ème secteur de la piste ! Si vous essayez de lire un secteur &c? sur une disquette formatée "SYSTEM" (secteurs de &41 à &49), vous obtiendrez un Read ta il. Il faut analyser le format de la disquette pour être sûr de demander les bons secteurs. C'est le rôle du LOGIN, qui est effectué

RSX 1 par 1ère méthode (vecteur #1B)

LD HL,ERROR_EN
CALL #BCD4
;KL_FIND_COMMAND
RET NC ;ou JR NC,ERROR
LD A,1 ;messages inhibés
JP #1B ;le RET de la routine
; rendra la main
ERROR_EN DEFB 1 + #80 ;1er et dernier caractère

par les RSX A et B. Au retour, la table de paramètres FDC est mise à jour. Il ne reste qu'à lire FSC (premier secteur de chaqui piste) situé en +&19F pour le lecteur A et ei +&1DF pour le lecteur B, par rapport ai début de la table AMSDOS, dont l'adresse est stockée en &BE7D. Vous aurez quelque chose qui ressemble à :

LD HL,(&BE7D)
LD BC,&19F
ADD HL,BC
LD A,(HL)...

Ca y est, vous avez conçu une routine de lecture du catalogue ? Il vous manque peut être un algorithme de tri ? AMSTRAD LIVE peut vous aider.

Madram

RSX 4 par 2eme méthode (restart #18)

LD HL,RD_SECT
CALL #BCD4
RET NC ;problème
LD (RD_SECT+1),HL
LD A,C ;Numéro de ROM
LD (RD_SECT+3),A
; un peu plus tard
LD E,0 ; Lecteur/ tête
LD D,0 ; Piste
LD C,#C1 ;Secteur
LD HL,RD_BUF ;Tampon
RST #18 ;Le retour se fera
DEFW RD_SECT+1 ;après le DEFW

JP NC,RD_ERR ;Il y a eu une erreur
RET

RD_SECT DEFB #84 ;On y copiera l'adresse et le
DEFS 3 ; numéro de ROM (3 octets)
RD_BUF DEFS 512 ;Dépend de la taille du secteur

AMSLIVE n°7

★ ANNÉE: ???
★ AUTEUR: MADRAM

Page précédente : AMSLIVE n°07 - INITIATION ASSEMBLEUR : LES TABLES

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Benutzeroberflaeche CEUS v1.0 - Teil 1 : Grundlagen der grafischen Benutzeroberflächen (CPC Amstrad International)
» Coding » AMSLIVE n°01 - Balayage Video
» Coding » AMSLIVE n°16 - CRTC Detection
» Coding » RSX - Define - Place (Popular Computing Weekly)
» Coding » AMSLIVE n°07 - INITIATION ASSEMBLEUR : LES TABLES
» Coding » AMSLIVE n°04 - Asic - Scrollhard
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 291 millisecondes et consultée 2569 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.