OPT PAG TTL UTILISATION RAM EN PSEUDO DISQUES PAG * PROGRAMME ORIGINAL ECRIT PAR MR DANIS æ COMMENTAIRES REVISES * LE 22 JUIN 1954 * C.TAVERNIER * POUR LE HAUT PARLEUR * PARAMÈTRES * N8 DE PAGES : NBPAGE EQU 2 Mettre (1 au 2) * * NB DE SECTEURS RESERVES POUR LE DIRECTORY EN PISTE 0 DIR EQU 4 Mettre (4 ou 12) * * N‘ DE LECTEUR ATTRIBUE PAR DEFAUT AU PSEUDO DISK DEF EQU 3 ( 1, 2 ou 3) * * CONSTANTES DU DOS * GETCHR EQU $CD15 PUTCHR EQU $CD18 PSTRNG EQU $CD1E WARMS EOU $CD03 DATE EQU $CC0E GETHEX EQU $CD42 SYSFCB EQU $C840 RPTERR EQU $CD3F OUTDEC EQU $CD39 * * EQUIVALENCES DIVERSES IF NBPAGE=2 PISMAX EOU 2*$E0/SECMAX-1 ELSE PISMAX EQU $E0/SECMAX-1 ENDIF * SECMAX EOU DIR+4 Nb de secteurs max TABLEC EOU $DE00 * ORG $C100 * DEBUT BRA DEB FCB 13 Version 1.3 DEB JSR GETHEX Acquisition Na de lecteur LBCS ERREUR TSTB No de lecteur attrubué ? BNE ACCORD Oui CLRA LDE #DEF BRA CDNTIN ACCORD TFR X,D CMPD #3 LBHI ERREUR CONTIN STD BONLEC LDX #MESG1 En-tete JSR PSTRNG Ecriture * * TEST SI PREMIERE UTILISATION * SINON DEMANDE SI FORMATAGE AUTORISE * SI OUI FORMATE LA MEMOIRE SANS * POSER DE QUESTION * LDD TABLEC+13 CMPD #LECT1 BNE PREPAS LDX #MESG5 JSR PSTRNG JSR GETCHR ANDA #$5F CMPA #'O BNE FIN LDX #MESG6 JSR PSTR JSR GETCHR ANDA #$5F CMPA #'O BNE FIN BRA EFF PREPAS STD SVECT+1 * * CRÉATION SIR , FORMATAGE RAM * INITIALISATION DES LECTEURS * EFF LDU #BUFSIR LDX #$100 LBSR MZERO LDX #INISIR LDU #BUFSIR+16 LDA #24 LBSR DEPL LDX #DATE LDU #BUFSIR+35 LDA #3 LBSR DEPL LDX #MESG2 JSR PSTRNG JSR FORMAT LDX #MESG3 JSR PSTR LDX #MESG4 JSR PSTRNG LDX #EONLEC CLRB Drapeau suppression zéros non significatifs JSR OUTDEC LDA #‘. JSR PUTCHR LDX #LECT1 STX TABLEC+13 LDX #TABLEC LDU #DEPDIS LDA #30 LBSR DEPL FIN LDA #$0D JSR PUTCHR LDA #$0A JSR PUTCHR JMP WARMS * ERREUR LDX #SYSFCB LDA #15 STA 1.X JSR RPTERR JHP NARMS * * S/P D'AFFICHAGE CHAINE sans PCRLF * PSTR LDA 0,X+ CMPA #$04 BEQ RET JSR PUTCHR BRA PSTR RET RTS * * CONSTANTES INITIALISATION SIR * INISIR FCC "PSEUDISK" Nom disque FCB 0,0,0 FDB 1 No de volume FCB 1,1 Début de chaîne libre FCB PISMAX,SECMAX Fin de chaine libre FDB PISMAX*SECHAM Longueur chaine libre FCB 0,0,0 DATE FCB PISMAX Nb de pxstes max FCB SECMAX Nb de secteurs max * * MESSAGES : * MESG1 FCC "PSEUDISK Version 1.3" FCB $0D,$0A IF NBPAGE=2 FCC "PAGES 2 ET 3 ( 112 K DE RAM ) UTILISEES EN PSEUDO DISOUE" ELSE FCC "PAGE 2 ( 56 K DE RAM ) UTILISEE EN PSEUDO DISOUE" ENDIF FCB $04 MESG5 FCB $0D.$0A FCC "***** ATTENTION *****" FCB $0A.$0A,$0D FCC "LE PSEUDO DISQUE A DEJA ETE FORMATE !" FCB $0A,$0D FCC "DESIREZ vous RECOMMENCER (O/N*) ? " FCB $04 MESG6 FCB $0A,$0D FCC "EN ETES VOUS SUR (O/N*) ? " FCB $04 MESG2 FCB $0D,$0A FCC "FORMATAGE MEMDIRE EN COURS" FCB $0A,$0D,4 MESG3 FCB $0A,$0D FCC "FORMATAGE TERMINE“ FCB $04 MESG4 IF DIR=4 IF NBPAGE=1 FCC "28 PISTES DE 8 SECTEURS" ELSE FCC "56 PISTES DE 8 SECTEURS" ENDIF ELSE IF NBPAGE=1 FCC "14 PISTES DE 16 SECTEURS" ELSE FCC "28 PISTES DE 16 SECTEURS" ENDIF ENDIF FCC " DISPONIBLES SOIENT : " IF DIR=4 IF NBPAGE=1 FCC "216 SECTEURS" ELSE FCC "440 SECTEURS“ ENDIF ELSE IF NBPAGE=1 FCC "208 SECTEURS" ELSE FCC "432 SECTEURS" ENDIF ENDIF FCC " LIBRES“ FCB $0D,$0A,$0A FCC "LE PSEUDO DISQUE PORTE LE NUMERO DE LECTEUR : FCB S04 BUFSIR EOU * * ORG $ECOO * ATTENTION , NE PAS MODIFIER * CETTE ORIGINE * * EQUIVALENCE5 DIVERSES , PILPEM EQU BUFFER+$FF+$2O Pile système temporaire , PIACPU EQU $EFF6 PIA CPU09 FLAG FCB $00 FLAG mode courant * ($00=Mode dlsque $FF=Mode RAM) BONLEC RMB 2 No de lecteur attribué au pseudo disque JUMP EQU $7E SVECT FCB JUMP Sauv. vect. "LECT" d'origine RMB 2 * * S/P DE RAZ ZONE MEMOIRE *I ENTREE : U=Adrese de début * X=Lonqueur zone MZERO CLR 0,U+ LEAX —1,X BNE MZERO RTS * * S/P DE TRANSFERT ZONE MEMOIRE * * ENTREE : X=Début zone à transférer * U=Adresse du but * A=Longueur zone à transférer * DEPL LDB 0,X+ STB 0,U+ DECA BNE DEPL RTS * * S/P DE FURMATAGE RAM * FORMAT PSHS U,V TFR S,Y LDS #PILPEM LBSR ARPAG2 LDU #$0000 LDX #$E000 BSR MZERO IF PAGE=2 LBSR ARPAG3 LDU #$0000 LDX #$E000 BSR MZERO end if JSR ARPAG2 LDD #$0002 BSR FORPG2 IF NBPAGE=2 LBSR ARPAG3 LDX #$0000 BSR FORPG3 ENDIF CLRA LDB #SECMAX LBSR CALCUL LDD #$0000 STD 0,U LDA #PISMAX LDB #SECMAX LBSR CALCUL LDD #$0000 STD 0,U LBSR ARPAG1 LDD #$0003 LDX #BUFSIR BRA ECRSEC * S/P DE FDRHATAGE PAGE : * FORPG2 LDX #$0000 FORPAG STD 0,X LEAX $100,X CMPX #$DFFF BHI FIN2 FORPG3 INCB CMPB #SECMAX BLS FORPAG LDB #1 INCA BRA FORPAG FIN2 RTS * * S/P LECTEUR POUR PSEUDO DISQUE * * ECRITURE D'UN SECTEUR : * ECRIT PSHS U,Y TFR S,Y LDS #PILMEM ECRSEC PSHS D LDU #BUFFER LDA #$00 JSR DEPL PULS D LBSR CALCUL LDA #BUFFER LDA #$00 JSR DEPL LBSR ARPAG1 TFR Y,S PULS U,Y CLRB RTS * * LECTURE D'UN SECTEUR * LECT PSHS U V TFR S,Y LDS #PILPEM PSHS X LBSR CALCUL TFR U X LDU #BUFFER LDA #$00 LBSR DEPL LBSR ARPAG1 LDX #BUFFER PULS U LBSR DEPL TFR Y,S PULS U,Y BON CLRB RTS * * SELECTION LECTEUR SPECIFIE : * LECTl LDB 3,X CMPB BONLEC+1 BNE NBLECT TST FLAG BEO RAMDEP BRA FIN3 RAMDEP LDX #DEPRAM PSHS U LDU #TABLEC LDA #30 LBSR DEPL DEC FLAG PULS U FIN3 CLRB RTS * NBLECT TST FLAG BEQ LECOUR PSHS X,U LDX #DEPDIS LDU #TABLEC LDA $30 LBSR DEPL 1NC FLAG PULS X,U LECOUR JMP SVECT * * INITIALISE LECTEUR (DEPART A FROID) : * INIT BSR INITAB JMP TABLEC+21 * * INITIALISE LECTEUR ( DEPART CHAUD) : CHAUD BSR INITAB JMP TABLEC+24 * INITAB LDX #DEPDIS LDU #TABLEC LDA #30 LBSR DEPL CLR FLAG RTS * * RECOUVRE VECTEUR LECTEUR RAM * DEPRAM JMP LECT JMP ECRIT JMP BON JMP BDN JMP LECT1 JMP BON JMP BDN JMP INIT JMP CHAUD JMP BON * * RECOUVRE VECTEURS LECTEUR DISQUE * DEFDIS RMB 30 Remplis quand PSEUDISK copie vecteurs * Lecteur d'or1g1ne * * S/P DE CALCUL ADRESSE RAM D'UN SECTEUR : * * ENTRÉE : D=T/S Demandées * SDRTIE : U=Adresèe RAM équivalente du pseudo disque * Page arrêtée en fonction adresse * CALCUL DECB PSHS B LDB #SECMAX MUL IF NBPAG=2 CMPD #$00E0 BCS PAGE2 SUBD #$00E0 BSR ARPAG3 BRA PAGE3 PAGE2 EQU * PAGE3 EQU *+2 ENDIF * BSR ARPAG2 TFR B,A ADDA 0,S+ CLRB TFR D,U RTS * * S/P D'ARRÊT PAGE 3 * ARPAB3 PSHS B LDB [PIACPU] ANDB #$FC ORB #$03 STB [PIACPU] PULS B RTS * * S/P D’äRRET PAGE 2 * ARPAG2 PSHS B LDB [PIACPU] ANDB #$FC ORB N502 STB [PIACPU] PULS B RTS * * S/P D'ARRET PAGE 1 * ARPAG1 PSHS B LDB [PIACPU] ANDB #$FC ORB #$01 STB [PIACPU] PULS B RTS BUFFER EQU * END DEBUT