; Cette courte routine se passe fort bien de préambule . ------------------- ; ;- Stocker une piste complete . Si buffer plein retour avec NC - ; FORMATER LD HL,TFORMATE ;Afficher texte formatage CALL PRT ; LD HL,(POINPIS) ;Prendre le pointeur INC HL LD A,(HL) ;et recuperer FLAGFNC LD (FLAGFNC),A INC HL LD (POINPIS),HL ;Pointe sur piste suivante si pas formatee ; ;BIT 3,A JP NZ,DEFORMA ;Piste origine pas formatee , deformater piste ; INC A ;Inutilise dans cette version RET Z ;Piste en attente ; ;- Piste formatee . Reprendre parametres piste et remettre dans programme - ; GOFORM LD E,(HL) ;Recupere longueur de secteur INC HL LD D,(HL) LD (LONGSEC),DE INC HL ; LD DE,LENSEC ;Recuperer LENSEC - NBSEC - GAPFORM - OCREMP LD BC,4 LDIR ; LD A,(NBSEC) LD C,A LD B,0 PUSH BC ;SLA C ;C = C*4 ;SLA C LD DE,IDOUTDRA ;Recuperer les IDS et les stocker dans la liste LDIR ;de sortie POP BC ; PUSH BC LD DE,LISTERR ;Et la liste des etats d'erreur LDIR POP BC ; LD (POINPIS),HL ;Stopper pointeur sur 1ers octets adresse buffer ; ;- Formater - ; WAITDIS LD HL,IDOUTDRA CALL FORMATE ;La piste est formatee par la routine FORMATE LD DE,#0213 ;Locate pour erreur drive CALL TSMISPROT ;Voir si erreur drive . NC si oui JR NC,WAITDIS ;Attendre que drive ready ;SCF ;Marquer format effectue RET ;Fini ; ;- Deformater - ; DEFORMA LD HL,TDEFORM ;Texte deformatage CALL PRT LD A,1 ;Un seul secteur LD (NBSEC),A LD A,6 ;De taille 6 LD (LENSEC),A ; WAITDIS1 LD HL,TABDEFOR ;Avec des IDS bidons suffit a deformater une piste CALL FORMATE LD DE,#0213 ;Locate pour erreur drive CALL TSMISPROT ;Voir si erreur drive . NC si oui JR NC,WAITDIS1 XOR A ;Enlever CARRY pour signaler deformatage RET ; TABDEFOR DB #FF,#FF,#FF,6 TFORMATE DB 31,2,20,24," FORMATAGE PISTE ",24,#80 TDEFORM DB 31,2,20,24," DEFORMATE PISTE ",24,#80 ;---------------------- — ECRITURE DE LA PISTE - ---------------------- C'est exactement l'inverse de la routine de stockage . ; ;- Ecrire une piste complete - ; ECRIRE LD HL,TECRIPI ;Textes ecriture CALL PRT LD HL,TGAPRW ;GAP RW CALL PRT LD A,(GAPRW) CALL PRTHEX1 LD HL,TSECTS ;et secteurs CALL PRT ; LD HL,(POINPIS) ;Recuperer le debut de la zone des adresses PUSH HL ;de stockage et mettre dans IX POP IX ; LD HL,LISTERR ;Etats d'erreur LD (POINTER),HL LD HL,IDOUTDRA ;Et IDS a ecrire LD (POINTID),HL ; ;- Routine ecriture physique - ; XOR A ;Compteur à 0 LD (COUNT),A LD A,(NBSEC) LD B,A ; BCLWRIP PUSH BC LD HL,(POINTID) ;Passer les 4IDS au programme y compris la piste . CALL IDTRANS4 LD A,(QUATRID+2) ;Les secteurs sont ecrits un a un , le dernier LD (DERSEC),A ;secteur a ecrire est donc le meme LD (POINTID),HL ;Pointer la suite des IDS ; LD L,(IX+0) ;Adresse de deépart ecriture LD H,(IX+1) LD (ADBUFF),HL ;Dans ADBUFF ; LD HL,(POINTER) LD A,(HL) ;Marque secteur ecrase ? CP #7F ;Oui . Ce secteur a ete detruit par l'ecriture JP Z,CRUNCHE ;precedente . Sauter SANS AVANCER LE COMPTEUR . ; CP #FF ;Voir si le secteur a ete stocke sous forme compactee LD B,#45 ;Si oui ecrire en repetant OCREMP par routine speciale JR Z,NOCMCOMP ;Sans CM CP #F7 ;Avec CM JR NZ,PACOMPAC ;Octet a subi un XOR #FF si compacte d'ou #FF & #F7 ! ; LD B,#49 NOCMCOMP LD A,B ;Ecrire avec la routine speciale qui transemet LD HL,WRITFDC2 ;toujours le meme octet . CALL SETCOM2 JR ECRIR1 ;Aller ecrire ; PACOMPAC LD A,(QUATRID+3) ;Voir si taille 0 OR A JR NZ,PASTZER ;Non ; LD HL,(POINTER) ;N'ecrire taille 0 que si MAM ou DAM LD A,(HL) AND %00000011 ;MAM - DAM ? JP Z,RIENECRI ;NON ; LD B,#45 JR CMNOT1 ;Sinon ecrire n'importe quoi pour reproduire MAM ; PASTZER LD A,(FLAGFNC) ;Si piste a reparer , ignorer ce qui suit et tenter AND %01000000 ;l'ecriture de toute maniere JR NZ,ECRIR2 ; LD HL,(POINTER) LD A,(HL) AND %00110111 ;Si pas d'erreur PROVOQUEE sauf EP-HD-CM , c'est bon JP NZ,RIENECRI ;Sinon ne rien ecrire ; ECRIR2 LD B,#45 ;CM or not CM ? LD HL,(POINTER) LD A,(HL) AND %00001000 JR Z,CMNOT1 LD B,#49 ; CMNOT1 LD A,B ;Commande ecrire secteur LD HL,WRITFDC CALL SETCOM2 ; ECRIR1 CALL VISINST ;Viser d'apres COUNT et executer instruction ; LD DE,#0213 ;Locate pour erreur drive CALL TSMISPROT ;Voir si erreur drive . NC si oui JR NC,ECRIR1 ;Boucler si FDC pas content ; CALL TSTERRS ;Tester etat d'erreur ; LD A,"&" ;Afficher resultat d'ecriture CALL #BB5A LD A,(QUATRID+2) CALL PRTHEX1 CALL INV CALL PRT3ERR CALL INV ; RIENECRI LD HL,COUNT ;Au suivant INC (HL) CRUNCHE LD HL,(POINTER) INC HL LD (POINTER),HL INC IX INC IX POP BC DEC B JP NZ,BCLWRIP ;S'il en reste ; LD L,(IX+0) ;Adresse de deépart prochaine ecriture LD H,(IX+1) LD (POINPIS),HL LD A,23 CALL EFFLINE ;SCF RET ; TECRIPI DB 31,2,21,24," ECRITURE PISTE ",24,18,#80 TSECTS DB 31,20,22,24," SECTEURS : ",24,32,18,#80 TGAPRW DB 31,2,22,24," GAP RW : ",24,32,"&",18,#80 ;------------------------- Voilà . C'est la fin de la grosse tartine ! Reste à parcourir la section routines pour y trouver les quelques modifications apportées par rapport à la version précédente . ------------------------- -------------------------- — SUB ROUTINES POUR LE FDC - -------------------------- Pour la dernière du FDC , cette section est reproduite intégralement . Les parties collées à la marge n'ont pas subi de modification notables . ; ;- Routines completes FDC - ; ;- AFF.RESU. - ; AFFRES1 LD IY,#2018 AFFRESU PUSH HL PUSH BC CALL LOCATE LD B,3 LD HL,ET0 BCLARES LD A,(HL) CALL PRTBIN INC HL DJNZ BCLARES LD B,4 BCLARE1 LD A,"&" CALL #BB5A LD A,(HL) PUSH HL CALL PRTHEX1 POP HL INC HL DJNZ BCLARE1 POP BC POP HL RET ; ;- Moteur - ; MOTON LD A,(FLAGMOT) CP 1 RET Z LD A,1 CALL MOTCOM LD A,(TEMPMOT) ;Mini 55 JP TEMPAMS MOTCOM LD (FLAGMOT),A LD BC,#FA7E OUT (C),A RET ; MOTOFF XOR A JR MOTCOM ; ;- Tester les 2 drives - ; TST2DR XOR A ;REMANIE EN FONCTION DE LA NOUVELLE PRESENTATION LD (DRSELEC),A ;MAIS PRINCIPE IDENTIQUE A VERSION PRECEDENTE LD (PISTSEL),A LD (PISTL),A LD (PISTW),A ; TST2DR1 CALL CALIBRE ;Aller piste 0 CALL TSTDRIV ;Tester etat drive . A = ET3 au retour LD (ETDRA),A LD HL,#0D02 ;Locate pour texte etat CALL AFRESDR ;Tester etat et afficher ; LD A,1 ;Idem sur drive B LD (DRSELEC),A RECALI CALL CALIBRE CP #80 JR NZ,BALLUME ; LD HL,TJEVEUB ;B doit etre allume CALL PRT CALL #BB06 LD A,17 ;Effacer texte CALL #BB5A JR RECALI ; BALLUME CALL TSTDRIV LD (ETDRB),A LD HL,#2E02 ; ;- Afficher etat drives - ; AFRESDR PUSH AF ;Preserver ET3 CALL #BB75 ;Placer texte LD HL,TNOLECT POP AF ;Recuperer ET3 CP 1 JR Z,DRHS ;Lecteur HS ;BIT 5,A JR NZ,DREADY ; LD HL,TMISS ;Disque manque JR DRHS ; DREADY LD HL,TPROT ;BIT 6,A JR NZ,DRHS ;Protege ecriture ; LD HL,TNOPROT ;OK Ecriture DRHS JP PRT ; TJEVEUB DB 31,46,2,24," ALLUMER DRIVE B ! ",24,7,13+#80 TNOLECT DB " Lecteur absent ",#80 TMISS DB " Disque manquant ",#80 TPROT DB " Protege ecriture",#80 TNOPROT DB " OK en ecriture ",#80 ; TSMISPROT CALL TSTMISS ;Tester disc missing ET write protected RET NC JP TSTPROT ; TSTMISS LD A,(ET0) ;Tester 'Disc missing' AND %00001000 ;SCF RET Z ; LD HL,TMISS JR STOPDRV ; TSTPROT LD A,(ET1) ;Tester 'Write protected' AND %00000010 ;SCF RET Z ; LD HL,TPROT ; STOPDRV PUSH HL ;De doit contenir coordonnees locate EX DE,HL CALL #BB75 CALL INV CALL SPACE LD A,(DRSELEC) ADD A,#41 CALL #BB5A LD A,":" CALL #BB5A POP HL ; CALL PRT CALL SPACE CALL INV CALL SONNE CALL #BB06 LD A,17 CALL #BB5A XOR A RET ; ;- Aller en piste PISTSEL - ; GOPISTE PUSH DE ;QUELQUE PEU RETOUCHEE ET REMPLACE 'GOPIST1' LD A,(NBTENT) LD B,A BCLPIST CALL GOPISTN JR C,SURPIST DEC B JR Z,FINPIS1 CALL CALIBRE JR BCLPIST ; SURPIST PUSH AF LD A,(PISTSEL) PUSH BC LD B,A LD A,(ET1) CP B POP BC JR Z,FINPIST POP AF DEC B JR NZ,BCLPIST FINPIST POP AF FINPIS1 POP DE RET ; ;- Initialisation des bits de FLAGERR selon interpretation resultat ; TSTERRS LD IY,FLAGERR ;RAZ Erreurs LD (IY+0),0 LD A,(QUATRID+1) ;Test des erreurs OR A JR Z,OKHEAD SET 6,(IY+0) OKHEAD LD HL,ET1 ;Sur ET1 BIT 5,(HL) JR Z,NOERCRC SET 5,(IY+0) NOERCRC BIT 2,(HL) JR Z,OKDATA SET 4,(IY+0) OKDATA BIT 0,(HL) JR Z,OKMA SET 1,(IY+0) OKMA INC HL ;Sur ET2 BIT 6,(HL) JR Z,OKCM SET 3,(IY+0) OKCM BIT 5,(HL) JR Z,OKDD SET 2,(IY+0) OKDD BIT 0,(HL) JR Z,OKDA SET 0,(IY+0) OKDA LD A,(QUATRID) LD L,A LD A,(PISTSEL) SUB L RET Z SET 7,(IY+0) RET TEMPAMS PUSH AF ; Temporisation de A*27 Ms LD A,12 CALL TEMPMIL POP AF DEC A JR NZ,TEMPAMS LD A,15 CALL TEMPMIL JR LITSTAT ; TEMPMIL PUSH AF LD A,#F6 BCLTEMP DEC A JR NZ,BCLTEMP POP AF DEC A JR NZ,TEMPMIL RET ; RAZINTE CALL LITSTAT ;- Attendre que le FDC soit bien dispose - CP #80 JR NZ,RAZINTE RET ; TSTDRIV CALL RAZINTE ;- Test drive - LD A,4 CALL INSTRU1 ;Envoyer instruction & drive JP RESULT ; LITSTAT LD A,#08 ;Lire statuts FDC - CALL ENVOFDC JP RESULT ; ;- Tete sur la piste 0 - ; CALIBRE LD A,7 ;RESTRUCTURE DE MANIERE A TESTER UN EVENTUEL CALL INSTRU1 ;'DISC MISSING' LORS DE GOPISTE CALL TEMP1 LD A,(ET1) OR A JR NZ,CALIBRE RET ; GOPISTN LD A,#F ;Aller en piste N CALL INSTRU ;Envoyer instruction , drive et piste selectionnes TEMP1 LD A,(WAITPIS) CALL TEMPAMS ; RETTSDR DB 0 ;Ici un RET pour ne pas bloquer en entree de programme LD DE,#0213 ;si drive B absent ou sans disc (TSTDRIV) CALL TSTMISS JR NC,GOPISTN RET ; FORMATE PUSH DE ;- Formater - PUSH BC LD B,#4D CALL COMPCOM CALL INSTRU2 LD A,(LENSEC) ;Env.Par. CALL ENVOFDC LD A,(NBSEC) CALL ENVOFDC LD A,(GAPFORM) CALL ENVOFDC LD A,(OCREMP) CALL ENVOFDC DI LD BC,#FB7E CALL WRITFDC1 POP BC POP DE RET ; TSTDIDC DI PUSH BC ;- Lire les IDS - LD B,#4A ;Passer en double densite LD A,#A CALL INSTRU1 ;Lire les IDS en simple densite pour provoquer erreur CALL RESULT JR NC,RANGCOM ;Si erreur c'est bien DD et c'est fini ; DI LD B,#A;Si non passer en SD LD A,#4A ;Et lire en DD pour erreur CALL INSTRU1 ;SD=Err. CALL RESULT ; RANGCOM DI LD A,B LD (COMMAND),A POP BC SCF RET ; INSTRU CALL ENVOFDC ;- Envoyer au FDC drive , tete et piste - LD DE,(DRSELEC) ;E=Dr.D=P. LD A,(HEAD) OR E CALL ENVOFDC LD A,D HOP JP ENVOFDC ; INSTRU2 LD A,(COMMAND) ;- Envoyer au FDC , commande , head , drive - INSTRU1 CALL ENVOFDC PUSH DE LD A,(HEAD) LD E,A LD A,(DRSELEC) OR E POP DE JR HOP ; INSTRU9 CALL COMPCO1 ;- Envoyer commande et 9 octets pour read write - CALL INSTRU2 PUSH BC PUSH HL LD B,7 LD HL,QUATRID NEXT9 LD A,(HL) CALL ENVOFDC INC HL DJNZ NEXT9 DI LD BC,#FB7E POP HL ;Reprendre adresse buffer variable pour LITFDC3 PUSH HL CODEOPE CALL LITFDC ;CALL VARIABLE POP HL POP BC RET ; ENVOFDC DI ;Envoyer un octet au FDC PUSH BC LD BC,#FB7E PUSH AF WAITFDC IN A,(C) ADD A,A JR NC,WAITFDC ADD A,A JR NC,VEUTOCT POP AF POP BC EI RET ; VEUTOCT POP AF INC C OUT (C),A DEC C LD A,5 DIGERE DEC A NOP JR NZ,DIGERE POP BC EI RET ; WRITFDC LD HL,(ADBUFF) ;- Ecrire dans le FDC - WRITFDC1 LD DE,0 JR TESTFDC BCLWRT INC C LD A,(HL) OUT (C),A DEC C INC DE INC HL TESTFDC IN A,(C) JP P,TESTFDC AND #20 JR NZ,BCLWRT OUTWRIT LD (NBLUS),DE JP RESULT ; WRITFDC2 LD DE,0 ;REPETER LE MEME OCTET EN ECRITURE LD HL,(ADBUFF) ;HL n'est jamais incremente JR TESTFDC2 BCLWRT1 INC C LD A,(HL) OUT (C),A DEC C INC DE TESTFDC2 IN A,(C) JP P,TESTFDC2 AND #20 JR NZ,BCLWRT1 JR OUTWRIT ; LITFDC LD DE,(NBALIRE) ;- Lire et stocker le nombre d'octets donnes LD HL,(ADBUFF) LITFDC3 PUSH HL JR TSTFDC RETEST LD A,D OR E JR Z,TSTFDC INC C INI DEC C INC B DEC DE TSTFDC IN A,(C) JP P,TSTFDC AND #20 JR NZ,RETEST EXILIT POP DE AND A SBC HL,DE LD (NBLUS),HL JP RESULT ; LITFDCX PUSH HL JR TSTFDCX RETESTX INC C IN A,(C) DEC C INC HL TSTFDCX IN A,(C) JP P,TSTFDCX AND #20 JR NZ,RETESTX JR EXILIT ; LITFDC2 LD HL,(LONGSEC) ;Lecture pour Chercher la vraie taille d'un secteur INC HL TSTFDC3 LD A,H OR L JR Z,TSTGAP TSTFDCA IN A,(C) JP P,TSTFDCA AND #20 JP Z,RESULT INC C IN A,(C) DEC C DEC HL JR TSTFDC3 ; TSTGAP IN A,(C) JP P,TSTGAP LD HL,BUFGAPS LD DE,267 JR LITFDC3 ; ;------------------------ ;- LITFDC4 Lire et stocker l'octet de remplissage et sauter - ;- LITFDC5 Compter les octets de remplissage jusqu'au CRC et sauter - ;- LITFDC6 Lire et compter le GAP - ;- LITFDC7 Attendre la fin de la lecture - ; LITFDC4 PUSH HL LD DE,-2 ;Longueur secteur a -3 pour 2 CRC JR TSTFDC4 RETEST4 INC C IN A,(C) DEC C LD (OCREMP),A ;Lire le 1er octet (remplissage) et stocker JR LITFDC5 TSTFDC4 IN A,(C) JP P,TSTFDC4 AND #20 JR NZ,RETEST4 JP RESULT ;Securite ; LITFDC5 LD L,A ;Memoriser valeur remplissage LD H,3 ;2 octets CRC a sauter et lire GAP JR TSTFDC5 RETEST5 INC DE ;Compter les octets de remplissage INC C ;on aura ainsi la vraie longueur IN A,(C) DEC C CP L ;Voir si on est arrive au 1er octet du CRC JR Z,TSTFDC5 DEC H ;Sauter CRC JR Z,LITFDC6 TSTFDC5 IN A,(C) JP P,TSTFDC5 AND #20 JR NZ,RETEST5 JP RESULT ; LITFDC6 LD (VALGAPF),A ;Ranger le GAP LD H,A ;Memoriser le GAP LD L,1 ;Compteur pour longueur GAP JR TSTFDC6 RETEST6 INC C IN A,(C) DEC C CP H JR NZ,LITFDC7 INC L TSTFDC6 IN A,(C) JP P,TSTFDC6 AND #20 JR NZ,RETEST6 JP RESULT ; LITFDC7 LD (LONGSEC),DE ;Ranger longueur LD A,L LD (GAPFORM),A ;et GAP POP HL ;------------------------- LITFDC1 IN A,(C) ;- Lire sans rien stocker - JP P,LITFDC1 AND #20 JP Z,RESULT INC C IN A,(C) DEC C JR LITFDC1 ; RESULT DI ;- Resultat - PUSH BC LD BC,#FB7E PUSH HL PUSH DE LD D,0 LD HL,ET0 PUSH HL JEBOSSE IN A,(C) CP #C0 JR C,JEBOSSE INC C IN A,(C) LD (HL),A INC HL INC D DEC C ; TEMPRES DEC A JR NZ,TEMPRES IN A,(C) AND #10 JR NZ,JEBOSSE POP HL LD A,(HL) AND #C0 DEC HL LD (HL),D POP DE POP HL POP BC LD A,(ET0) EI RET NZ SCF RET ; RESU1 LD BC,#FB7E ;LECTURE RESULTAT RAPIDE ET SANS DI POUR LITRE IDS LD HL,ET0 JEBOS1 IN A,(C) CP #C0 JR C,JEBOS1 INC C IN A,(C) LD (HL),A INC HL DEC C LD A,5 TEMPR1 DEC A JR NZ,TEMPR1 IN A,(C) AND #10 JR NZ,JEBOS1 RET ; ;- Avancer d'une piste - ; INCPIST PUSH HL ;Avancer d'une piste LD HL,DERPIST LD A,(PISTSEL) CP (HL) ;P.Max. JR Z,PASINC INC A LD (PISTSEL),A LD A,1 LD (WAITPIS),A ;SCF ;Flag C si encore piste , NC si non POP HL RET PASINC LD A,41 LD (WAITPIS),A POP HL XOR A RET ; ;- Composer les commandes - ; COMPCO1 LD A,(COMMAN2) LD B,A COMPCOM LD A,(FLAGDEN) ;Entree avec commande dans B LD C,A LD A,B ;B=Octet commande AND C LD C,A ;+Densite LD A,(FLAGMT) OR C ;+Multitrack LD (COMMAND),A RET ; COMLIPI LD A,#42 SETCOM2 LD (COMMAN2),A LD (CODEOPE+1),HL RET ; ;- Sub routines selection parametres lecture / ecriture - ; SETLECT LD A,(DRL) ;Selection drive - head - piste lecture LD (DRSELEC),A LD A,(HDL) LD (HEAD),A LD A,(PISTL) LD (PISTSEL),A RET ; SETWRIT LD A,(DRW) ;Selection drive - head - piste ecriture LD (DRSELEC),A LD A,(HDW) LD (HEAD),A LD A,(PISTW) LD (PISTSEL),A RET ; ;- Sub routines comparaisons - ; CPDRIVE LD A,(DRL) ;Comparer drive source et destination LD B,A LD A,(DRW) CP B LD A,0 RET Z INC A ;SCF RET ; CPPIST LD A,(PISTL) ;Comparer pistes source/destination LD B,A LD A,(PISTW) CP B RET ; DIFLENL LD A,(LENSEC) ;Comparer taille ID secteurs et vraie taille LD (VRAILEN),A LD B,A LD A,(QUATRID+3) CP B RET Z LD (LENSEC),A RET VRAILEN DB 0 ; ;- Verif.Valid pist. - ; VERIPIS LD A,(PISTMAX) LD B,A LD A,(DERPIST) CP B ;Fin > Maxi ? RET NC ;Oui LD B,A LD A,(PREMPIS) INC B CP B ;Deb.>Fin ? RET ; TSTNBSE LD A,(NBSEC) ;Tester nombre secteurs . NC si rate . OR A RET Z CP 33 RET ; CALIGAP LD A,(LENSEC) ;Calibrer le GAP OR A LD HL,T0DD LD C,15 JR Z,GAPVERI ; DEC A LD HL,T1DD LD C,12 JR Z,GAPVERI DEC A ; LD HL,T2DD LD C,8 JR Z,GAPVERI DEC A JR Z,GAPVERI ; LD HL,T3DD LD C,5 DEC A RET NZ ; ;- Rectifier le GAP lu - ; GAPVERI LD A,(NBSEC) ;Nombre secteurs < nombre a probleme CP C RET C ; BCLGAPV CP C ;Pointer GAP MAXI dans table JR Z,GAPVERI1 INC HL INC C JR BCLGAPV ; GAPVERI1 LD A,(GAPFORM);Voir si GAP hors limite LD B,A LD A,(HL) CP B RET NC ; LD (GAPFORM),A ;Rectifier si oui RET ; SETGRW LD A,(GAPFORM) CP 1 JR Z,SETGRW1 ;SRL A SETGRW1 LD (GAPRW),A RET ; T0DD DB 239,210,185,163,144,126,110,96,83,71,59,50,38,31,24,17,10,3 T1DD DB 216,171,134,102,74,49,16,8 T2DD DB 230,129,50 T3DD DB 191 ; ;- Variables buffer ; ADBUFF DW 0 ;Adresse buffer ; EFFLB1 RET AFFPIST RET TCOPDRV DS 100 ;------------------------- Fin des programmes commentés FDC . Les sections comprenant les sous routines d'affichage , d'edition , etc ... Ainsi que la section variables n'ayant pas subi de modifications depuis le numéro 2 ne sont pas reproduites ici . ------------------------- SOS Programmeurs n°4
★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 043 millisecondes et consultée 1873 foisL'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. |
|
|