| ★ CODING ★ LA ROUTINE D'ECRITURE DE SECTEURS ★ |
| Fdc - 12 - la Routine d'Ecriture de Secteurs (SOS Programmeurs) |
Cette routine est appelée par appui sur CTRL+W depuis le programme d'édition buffer . Sa structure est quasi identique au sous programme de lecture . Une seule différence fondamentale : Si la longueur ID est plus grande que la longueur réelle l'écriture du secteur détruira les IDS suivants . Une confirmation est donc demandée .;- Routine ecriture physique - ; WRITPHY PUSH HL ;Préserver les paramètres édition buffer PUSH DE CALL FEN1 ;Fenetre pour affichages ; CALL WRITPAR ;Initialiser en écriture CALL PUTDEST ;Texte mettre disque destination LD A,(PISTW) ;Piste écriture devient LD (PISTSEL),A ;piste sélectionnée . CALL AFFPIST ;Afficher numéro piste CALL GOPIST1 ;Aller sur piste JR C,OKPIS1 ; CALL ERPFORM ;Si NC , il n'y à sans doute pas de disquette JR ABANDON1 ; OKPIS1 LD HL,(ADID) ;Récupérer zone IDS ecriture LD A,(COUNT) ;et la position physique du secteur lu ; FINDWRI DEC A ;Pointer l'ID écriture concerné JR Z,SECWRIT INC HL INC HL INC HL INC HL JR FINDWRI ; SECWRIT CALL IDTRANS4 ;Copier les IDS dans QUATRID LD A,(QUATRID+2) LD (DERSEC),A ;1 seul secteur à écrire CALL DIFLENL ;Voir si LS ID > LS réel JR C,LENINF JR Z,LENINF ; LD HL,TECRASE ;Si oui . Avertir et confirmer écrasement CALL PRT CALL OUNO JP NC,ABANDON2 ; LENINF LD A,(COUNT) ;COUNT contient le numéro d'ordre du secteur CP 1 ;a lire CALL NZ,VISESEC ;Si ce n'est pas le premier , viser juste ; LD HL,(POINTER) ;Zone de stockage des états lecture LD A,(HL) AND %00001000 ;Tester si CM a été détecté et écrire LD A,#45 ;selon CM ou non . JR Z,NOWCM LD A,#49 NOWCM LD HL,WRITFDC ;Commande écrire buffer sur disque . CALL SETCOM2 ; LD HL,20000 ;Restaurer adresse d'origine du buffer LD (ADBUFF),HL CALL INSTRSEC ;Ecrire sur disque ; CALL AFFRESW ;Afficher statuts ecriture ABANDON2 LD A,(VRAILEN) ;Restaurer vraie longueur LD (LENSEC),A CALL SOURCE ;Reprendre les parametres source pour ; ;prochaine lecture ; ABANDON1 CALL FENBUF1 ;Restaurer fene^tre buffer POP DE ;Et récupérer paramètres édition POP HL RET ; ;- Afficher resultats ecriture - ; AFFRESW CALL EFFLB1 ;Effacer lignes du bas CALL DEUXNB ;Initialiser conversions 2 chiffres ; LD HL,TWSECT CALL PRT LD B,4 LD HL,QUATRID ;Afficher IDS écrits BCLWSE LD A,(HL) CALL PRTHEX1 INC HL DJNZ BCLWSE ; LD HL,TWDR CALL PRT LD A,(DRSELEC) ;Drive écriture ADD A,#41 CALL #BB5A ; LD HL,TWPIST CALL PRT LD A,(PISTSEL) ;Piste écriture CALL PRTDECIA CALL CINQNB ; CALL TSTERRS LD HL,TWERR CALL PRT CALL PRT3ERR ;Erreurs écriture ; LD HL,TOCWRIT CALL PRT LD HL,(NBLUS) ;Nombre d'octets effectivement écrits LD (VALEUR),HL CALL DEUCON16 LD IY,#2518 CALL AFFRESU ;Afficher ET1-ET2-ET3 ; LD A,7 CALL #BB5A ;Bip et attendre touche JP #BB06 ; ;- Textes et variables en rapport avec LITPHY et WRITPHY - ; TWSECT DB 31,2,22,24," ECRITURE SECTEUR : ",24," "+#80 TLDR DB " " TWDR DB " ",24," DRIVE : ",24," "+#80 TWPIST DB " ",24," PISTE : ",24," "+#80 TWERR DB 31,2,23,24," ERREURS ECRITURE : ",24," "+#80 TOCWRIT DB 31,2,24,24," OCTETS ECRITS : ",24," "+#80 TECRASE DB 31,2,22,20,24," ATTENTION !! SECTEUR > QUE TAILLE FORMAT !" DB " ECRASEMENT ",24," ",7+#80 ; TLITPHY DB 31,2,22,24," Secteur : ",24," ","&"+#80 TLITPH1 DB 31,20,22,24," - Position sur la piste : ",24," "+#80 TLITPH2 DB 31,52,22,24," - Octets lus : ",24," ","&"+#80 TLITPH3 DB 31,2,23,24," Taille ID : ",24," ",32+#80 TLITPH4 DB 31,20,23,24," - Taille reelle : ",24," "+#80 TLITPH5 DB 31,2,24,24," Etat d'erreur : ",24," "+#80 POINTID DW 0 STATANA DB 0 FLAGPHY DB #FF TREPROD DB 31,2,22,24," Reproduire format ? (O/N) ",24,7,18+#80 TOUPIST DB 31,2,22,18,"Donner numéro piste pour ecriture ? ",7+#80 TCOPDRV DB 31,2,21,24," Placer disquette destination dans : ",24," A" DB 7,10,13+#80 TIDCONF DB 31,2,21,24," Conformer IDS Piste ? (O/N)",24,7,18+#80 TREMET DB 31,2,21,24," Remettre disquette source dans : ",24," A",7,#80 FLAGREP DB 0 T0 DB 239,210,185,163,144,126,110,96,83,71,59,50,38,31,24,17,10,3 T1 DB 216,171,134,102,74,49,16,8 T2 DB 230,129,50 T3 DB 191 IDSLECT DS 4 ADID DW 0 ; |
| ![]() |
| Page précédente : Fdc - 11 - la Routine de Lecture Tous Secteurs |
|