FORMLN 65 65 lignes par page SETDP $20 SECT EQUATE,ABS,LOC=2000H PUBLIC EQU 1 TTL DEFINITION DES MACROS DEX MACRO Decremente le registre X LEAX -1,X ENDM INX MACRO Incremente le registre X LEAX 1,X ENDM TSX MACRO Transfere S dans X TFR S,X ENDM TXS MACRO Transfere X dans S TFR X,S ENDM SEC MACRO Set carry. ORCC #1 ENDM SBA MACRO Soustrait B de A PSHS B SUBA ,S+ ENDM SEV MACRO Set overflow. ORCC #2 ENDM TAB MACRO Transfere A dans B. TFR A,B TSTA ENDM TBA MACRO Transfere B dans A. TFR B,A TSTA ENDM TPA MACRO Transfere CC dans A. TFR CC,A ENDM TAP MACRO Transfere A dans CC. TFR A,CC ENDM ABA MACRO Ajoute A a B. PSHS B ADDA ,S+ ENDM CBA MACRO Compare B a A. PSHS B CMPA ,S+ ENDM CLC MACRO Clear carry. ANDCC #$FE ENDM SETCC MACRO Transfere ARG0 dans CC. ORCC #ARG0 ENDM ASLD MACRO Shift a gauche de D ASLB ROLA ENDM LSLD MACRO Shift a gauche de D ASLB ROLA ENDM LSRD MACRO Shift logique a droite de D LSRA RORB ENDM * ***** MACRO SEQUENCE * SEQ MACRO ARG1,ARG2 Reservation de ARG2 octets dans ARG1 IFNB Si ARG1 est non vide ARG1 EQU * il devient un EQU. ENDIF IFNB Si ARG2 est non vide ORG *+ARG2 on saute ARG2 octets avant l'EQU suivant. ENDIF ENDM DCNTRY MACRO ARG1,ARG2 Pour declarer les points d'entree du moniteur ARG1$ EQU ARG2 ARG1. EQU ARG2+$80 ENDM SKIP1 MACRO Pour sauter 1 octet FCB $21 ENDM SKIP2 MACRO Pour sauter 2 octets FCB $8C ENDM * * Macros d'appel du moniteur par SWI * CALL MACRO ARG1 SWI FCB ARG1$ ENDM * GOTO MACRO ARG1 SWI FCB ARG1. ENDM TTL MAP MEMOIRE DU MO5 ******************************************************************************* * * * MAP MEMOIRE DU MO5 * * * * * * ADRESSE (HEX) * * * * 0000-1FFF Memoire d'ecran 8 K * * 2000-20FF PAGE 0 moniteur } * * 2100-21FF PAGE 0 Basic. } 16 K * * 2200-9FFF Memoire uti1isateur } * * A000-A7BF 1,9 K POUR FLOPPY * * A7C0-A7C3 PIA 6821 SYSTEME * * A7C4-A7CB L I B R E . . . * * A7CC-A7CF PIA 6821 EXTENSION JEU * * A7D0-A7DF CONTROLEUR DE MINI-FLOPPY * * A7E0-A7E3 PIA 6821 INTERFACE PARALELLE * * A7E4-A7E7 LIGHTPEN OU GATE ARRAY * * A7E8-A7FF L I B R E pour PIA et ACIA extensions * * B000-EFFF Cartouche ROM enfichable 16 K. * * C000-EFFF BASIC resident. Dans ce cas,libre de B000 a BFFF * * F000-FFFF MONITEUR SYSTEME 4 K * * * ******************************************************************************* TTL EQUATES DES POINTS D'ENTREE ET DE LA ROM CONTROLEUR ******************************************************************************* * * * EQUATES DE LA ROM ACCOMPAGNANT LE CONTROLEUR DE DISQUE * * * ******************************************************************************* ORG $A000 SEQ IDDISK,3 Identificateur de reconnaissance du controleur. SEQ DKCHK,1 Checksum de l'identificateur de disque. SEQ DKCONT,3 $A004 Point d'entree du controleur disque. SEQ DKBOOT,3 $A007 Points d'entree disque SEQ DKFMT,3 $A00A SEQ LECFA,3 $A00D SEQ RECFI,3 $A010 SEQ RECUP,3 $A013 SEQ ECRSE,3 $A016 SEQ ALLOD,3 $A019 SEQ ALLOB,3 $A01C SEQ MAJCL,3 $A01F SEQ FINTR,3 $A022 APPLIC EQU $EFFE Point d'entree Basic et cartouches ROM. ******************************************************************************* * * * EQUATES DES CODES DES POINTS D'ENTREE MONITEUR * * $ : equivalent a appel par JSR * * . : equivalent a appel par JMP * * * ******************************************************************************* DCNTRY MENU,0 DCNTRY PUTC,2 DCNTRY FRM0,4 DCNTRY FRM1,6 DCNTRY BIIP,8 DCNTRY GETC,$0A DCNTRY KTST,$0C DCNTRY DRAW,$0E DCNTRY PLOT,$10 DCNTRY CHPL,$12 DCNTRY GETP,$14 DCNTRY LPIN,$16 DCNTRY GETL,$18 DCNTRY GETS,$1A DCNTRY JOYS,$1C DCNTRY NOTE,$1E DCNTRY K7CO,$20 DCNTRY K7MO,$22 DCNTRY PRCO,$24 DCNTRY DKCO,$26 DCNTRY DKBO,$28 DCNTRY DKFM,$2A DCNTRY ALLB,$2C DCNTRY ALLD,$2E DCNTRY ECRS,$30 DCNTRY FINT,$32 DCNTRY LECF,$34 DCNTRY MAJC,$36 DCNTRY RECF,$38 DCNTRY RECP,$3A * ***** POINT D'ENTREE APRES UN ESSAI DISQUE BASIC RATE * CLDPNT EQU $001E TTL PAGE 0 DU MONITEUR ******************************************************************************* * * * PAGE 0 DU MONITEUR SYSTEME * * * ******************************************************************************* ORG $2000 SEQ TERMIN,25 Table des terminateurs de lignes SEQ STATUS,1 b7:majus/minus,b6:Rollup rapide,b5 libre * b4:Graphiques point seul,b3:Flag inhibition buzzer * b2=Curseur ON/OFF,bl=semaphore autorepeat clavier. SEQ TABPT,1 Forme avec RANG un pointeur courant de 16 bits dans SEQ RANG,1 la table des terminateurs de lignes SEQ COLN,1 Doit suivre OBLIGATOIREMENT RANG pour l'editeur BASIC SEQ TOPTAB,1 Forme avec TOPRAN un pointeur de 16 bits sur le sommet * logique de la table des terminateurs SEQ TOPRAN,1 lere rangee Iogique de la fenetre. SEQ BOTTAB,1 Forme avec BOTRAN un pointeur de 16 bits sur la fin * loqique de la table des terminateurs SEQ BOTRAN,1 Derniere rangee logique de la fenetre. SEQ SCRPT,2 Pointeur d'ecran. SEQ STADR,2 1er octet definissant l'origine de la fenetre. SEQ ENDDR,2 Dernier octet definissant la fin de fenetre. SEQ BLOCZ,2 Bloc de deux zeros pour initialisations. SEQ FORME,1 Couleur PLOT et DRAW [-16,+15] SEQ ATRANG,1 b7 = plein ecran,bl = largeur, b0 = hauteur. SEQ COLOUR,1 p B V R p B V R : registre de couleur. SEQ PAGFLG,1 Flag de mode paqe : $FF = mode page, $00 = scroll. SEQ SCROLS,1 Flag de smooth scroll (O=normal, $FF=smooth) SEQ CURSFL,1 Flag de mouvement curseur indiquant qu'on ne pose * pas de lien dans la table des terminateurs. SEQ COPCHR,1 Flag indiquant qua Backspace et Horizontal Tab. * copient le caractere courant. SEQ EFCMPT,1 Flag de clignotement curseur. SEQ ITCMPT,1 Compteur d'interruptions (pour gestion curseur). SEQ PLOTX,2 Dernier plot, abscisse. SEQ PLOTY,2 Dernier plot, ordonnee. SEQ CHDRAW,1 ASCII caractere utilise dans PSET,LINE et BOX "CH" SEQ KEY,1 Touche clavier SEQ CMPTKB,1 Repeats du clavier. SEQ TEMPO,2 Tempo general de l'interpreteur musical. SEQ DUREE,2 Duree de la note. SEQ TIMBRE,1 Timbre. SEQ OCTAVE,2 Octave. SEQ K7DATA,1 Octet a ecrire sur la bande magnetique. SEQ K7LENG,1 Nombre d'octets a ecrire sur la bande . SEQ PR.OPC,1 Mot de code pour l'imprimante parallele SEQ PR.STA,1 Status courant de l'imprimante parallele SEQ TEMP,2 Registre temporaire de travail SEQ SAVEST,2 Registre de sauvegarde de S. * **** REGISTRES DES PRIMITIVES DISQUE **** * * Doivent se trouver en $2048 pour rester compatible avec * le DOS TO7 * RGPDQ EQU * * SEQ DK.OPC,1 MOT DE COMMANCE : Code d'instruction utilise par DKCONT * pour appeler une commande parametree par les registres * qui suivent. SEQ DK.DRV,1 No du disque selecte SEQ DK.TRK,2 No de piste SEQ DK.SEC,1 No de secteur SEQ DK.NUM,1 Entrelacement au formatage SEQ DK.STA,1 MOT D'ETAT : Contient le code d'erreur en cas d'insucces * de la commande signale par CY = 1 en sortie de DKCONT. SEQ DK.BUF,2 I/O BUFFER POINTER * **** REGISTRES COURANTS DE PISTE **** * SEQ TRACK0,2 Position courante de la tete sur le drive 0 SEQ TRACK1,2 Position courante de la tete sur le drive 1 SEQ TRACK2,2 Position courante de la tete sur le drive 2 SEQ TRACK3,2 Position courante de la tete sur le drive 3 * **** AUTRES REGISTRES MONITEUR **** * SEQ SEQUCE,1 Code sequence: 0=normal,2=escape,4=US,8=SS2 SEQ US1,1 1er caractere des sequences Unit Separator. SEQ ACCENT,1 Flag d'accent: 3 =cedille,2=aff.octets,l=saut octets SEQ SS2GET,1 Flag de mode accent utilise par PUTCH et GETCH. SEQ SS3GET,1 Flag de mode accent utilise par GETSCR SEQ SWI1PT,3 Pointeur SWl utilisateur ou SWITCH + flag SEQ TIMEPT,3 Pointeur interrupt timer utilisateur + flag MO9. SEQ IRQPT,3 Pointeur IRQ utilisateur + flag MO9. SEQ FIRQPT,3 Pointeur FIRQ utilisateur + flag MO9. SEQ SIMUL,3 Pointeur sur la table des entrees moniteur+ flag MO9 SEQ CHRPTR,3 Pointeur sur la table de decodage clavier + flag MO9 SEQ USERAF,3 Pointeur sur le gen. caracteres utilisateur+flag MO9 SEQ GENPTR,3 Pointeur sur le generateur de caracteres G0 + flag " SEQ LATCLV,1 Latence clavier programmable SEQ GRCODE,1 Mot de code pour le mode graphique imprimante SEQ DECALG,1 Decalage du light-pen en resolution "points". RGMON EQU * Prochaine position utilisable * Zone libre de cette adresse a $2080 * * DKFLG doit se trouver en 2080 * ORG $207F SEQ DEFDST,1 Flag de simple ou double densite SEQ DKFLG,1 Flag de presence controleur disque * * Pile systeme * SEQ STKEND,76 Profondeur de la pile systeme STACK EQU *-1 Sommet de la pile * * Buffer de saisie Light-pen * SEQ LPBUFF,24 Buffer de saisie du light-pen : 8 mesures max. ENDLPB EQU *-1 Fin du buffer light-pen * ***** FLAG DE RESET ***** * ORG $20FE SEQ TSTRST,2 Test du reset pour le moniteur.$A55A ==> reset SEQ ENDEQU,0 TTL ADRESSES D'ENTREES/SORTIES * **** ADRESSES D'ENTREES-SORTIES ******************************** * *** 6821 SYSTEME *** * PRA EQU $A7C0 REGISTRE DE DONNEES DU PORT A * PA0 (output) Forme * PA1 (output) Rouge Tour. * PA2 (output) Vert Tour. * PA3 (output) Bleu Tour.Forme * PA4 (output) 1/2 teinte tour: 0=sature,1=pastel * PA5 (input) interruption photostyle * PA6 (output) ecriture cassette * PA7 (input) lecture cassette PRB EQU PRA+1 REGISTRE DE DONNEES DU PORT B * PBO (output) Son. * PB1,PB2,PB3 (output) Matricaqe clavier:74 LS 138 * PB4,PB5,PB6 (output) Dematricaqe clavier:74 LS 151 * PB7 (output) Lecture clavier CRA EQU PRA+2 REGISTRE DE CONTROLE DU PORT A * CA1 (input) LP * CA2 (output) Commande moteur cassette CRB EQU PRA+3 REGISTRE DE CONTROLE DU PORT B * CBl (input) Interrupt 50 HZ. * CB2 (output) Incrustation: 0 mode incruste, 1 normal * *** 6821 JEUX *** * PRA1 EQU $A7CC REGISTRE DE DONNEES DU PORT A1 * PA0-7 (input) Lecture directions joysticks : 0 Nord0, * 1 Sud0, 2 West0, 3 Est0, 4 Nord1, 5 Sud1, 6 West1 * 7 Est1 PRB1 EQU PRA1+1 REGISTRE DE DONNEES DU PORT B1 * PB0-5 (input) Convertisseur digital/analogique sur 6 bits * PB6 (input) Action joystick 0 * PB7 (input) Action joystick 1 CRA1 EQU PRA1+2 REGISTRE DE CONTROLE PORT A1 * CA1 (input) Action joystick 0 CRB1 EQU PRA1+3 REGISTRE DE CONTROLE PORT B1 * CB1 (input) Action joystick 1 * *** 6821 INTERFACE PARALLELE CENTRONICS *** * PRA2 EQU $A7E0 REGISIRE DE DONNEES PORT A2 * PA0 (output) Receive data * PAl (output) Clear to send * PA5 (input) Request to send * PA6 (input) Data terminal ready * PA7 (input) Transmit data PRB2 EQU PRA2+1 REGISTRE DE DONNEES PORT B2 * PB0-7 (output) Donnees paralleles CRA2 EQU PRA2+2 REGISTRE DE CONTROLE PORT A2 * CA1 (input) Request to send CRB2 EQU PRA2+3 REGISTRE DE CONTROLE PORT B2 * CB1 (input} Acknowledge * CB2 (output) Strobe LP4 EQU PRA2+4 Compteur LP5 EQU PRA2+5 Compteur LP6 EQU PRA2+6 INIL + LT3 LP7 EQU PRA2+7 INIT TTL VALEURS ASCII ET PARAMETRES MUSICAUX * **** TABLEAU DES VALEURS ASCII ********************************** * NUL EQU $00 NULL STX EQU $02 START OF TEXT ETX EQU $03 END OF TEXT : SERT EGALEMENT DE STOP (CONT/C) EOT EQU $04 END OF TRANSMISSION ENQ EQU $05 ENQUIRE ACK EQU $06 ACKNOWLEDGE BEL EQU $07 BELL BS EQU $08 BACKSPACE HT EQU $09 HORIZONTAL TABULATION LF EQU $0A LINE FEED VT EQU $0B VERTICAL TABULATION FF EQU $0C FORM FEED CR EQU $0D CARRIAGE RETURN SO EQU $0E SHIFT OUT SI EQU $0F SHIFT IN DC1 EQU $10 DEVICE CONTROL 1 DC2 EQU $12 " " 2 DC3 EQU $13 " " 3 DC4 EQU $14 " " 4 NAK EQU $15 NON ACKNOWLEDGE SS2 EQU $16 SS2, APPEL A G2 CAN EQU $18 CANCEL ESC EQU $1B ESCAPE RS EQU $1E RECORD SEPARATOR US EQU $1F UNIT SEPARATOR SP EQU $20 SPACE DEL EQU $7F DELETE BREAK EQU ETX CONT/C STOPB EQU STX CONT/B * ***** PARAMETRES MUSICAUX * PO EQU '0 DO EQU '1 DOD EQU '2 REB EQU '3 RE EQU '3 RED EQU '4 MIB EQU '4 MI EQU '5 FA EQU '6 FAD EQU '7 SOLB EQU '7 SOL EQU '8 SOLD EQU '9 LAB EQU '9 LA EQU ': LAD EQU '; SIB EQU '; SINAT EQU '> DOB EQU '< UT EQU '= TTL PARAMETRES PERIPHERIQUES * ***** PARAMETRES MINICASSETTE A 1200 BAUDS * MOTEMP EQU $963D Tempo de base pour lancer la bande : 1/2 seconde. TIMCOM EQU 45 Attente lere demi-periode commune au zero et au un. TIMDIF EQU 50 Attente 2eme demi-periode du zero. WTHEOR EQU 65 2/3 de la periode T theorique. TOPIMG EQU 880 Parametre boucle d'attente du top image. WTSCRN EQU 1568 Parametre boucle d'attente d'une fenetre T.V. * ***** PARAMETRES IMPRIMANTE CENTRONICS * PR.WRC EQU %00000001 ECRIRE UN OCTET PR.CLS EQU %00010000 CLOSE PR.CPY EQU %00000010 SCREEN GRAPHIC COPY (CENTRONICS) PR.OPP EQU %00000100 OPEN EN WRITE PARALLEL (CENTRONICS) PR.NRD EQU %00001000 DEVICE NOT READY * ***** DIVERS ***** * KBSEC EQU $07 Latence clavier, environ 1 seconde. COLINT EQU %01000110 Bleu sur cyan, couleurs saturees INPRLP EQU $070C MSB = code mode qraphique imprimante, LSB = decalage * light-pen par defaut. (Les registres correspondants * sont consecutifs) CBASE EQU $40 Adresse de base couleur ( sequences escape ) FBASE EQU $50 Adresse de base fond ( sequences escape ) TBASE EQU $60 Adresse de base tour ( sequences escape ) * ***** ADRESSES DE L'ECRAN ***** * STAD EQU $0000 ENDAD EQU STAD+$1F40 CURSOR EQU STAD+$0118 Origine de la 1ere rangee TELCUR EQU STAD+$0258 Origine de Ia 2eme rangee ORGROL EQU STAD+$0140 Origine du Rollup ORGDBL EQU STAD+$028C Origine du Rollup double hauteur DERCUR EQU STAD+$1F18 Curseur sur la derniere rangee DIRECT EQU $20 Page zero moniteur INTERL EQU $28 Saut interligne TTL EQUATES DU CONTROLEUR DE FLOPPY ******************************************************************************* * * * CONTROLEUR HD6843 COUPLE AVEC 4 MINI-FLOPPY * * ENSEMBLE DES EQUATES DES ROUTINES D'ACCES PHYSIQUES * * * ******************************************************************************* * **** CODES DE COMMANDES **** * CRINIT EQU %00000001 INITIALISATION : Reset du controleur. Erreurs possibles : * CONTROLLER INOPERABLE. SSREAD EQU %00000010 SINGLE SECTOR READ : Lecture d'un secteur. Erreurs pos- * sibles : TRACK ERROR, SECTOR ERROR, DATA ERROR, NON * FORMATTED DISQUETTE, DRIVE NOT READY. SSWRIT EQU %00001000 SINGLE SECTOR WRITE : Ecriture d'un secteur. Meme er- * reurs que SSR avec en plus WRITE PROTECTED. STZERO EQU %00100000 SEEK TRACK ZERO = Retour en piste O. Erreurs possibles * : DRIVE NOT READY, NON FORMATTED DISQUETTE. SEEK EQU %01000000 SEEK : Acces a une piste. Erreurs possibles : DRIVE NOT * READY, NON FORMATTED DISQUETTE. VERIFY EQU %10000000 VERIFY OPTION : Option verification sur les acces en * ecriture. Erreur specifique : VERIFY ERROR. * **** NUMEROS DE DRIVE **** * DRV0 EQU %00000001 DRIVE 0 DRV1 EQU %00000010 " " 1 DRV2 EQU %00000100 " " 2 DRV3 EQU %00001000 " " 3 * **** CODES D'ERREUR **** * WRTPR EQU %00000001 WRITE PROTECTED TRKER EQU %00000010 TRACK ERROR : Erreur d'acces piste lors d'une tentative * de lecture ou d'ecriture. Implique que I'ID est correct SCTER EQU %00000100 SECTOR ERROR : Erreur sur secteur ID, soit qu'il soit * illisible ou qu'il y ait une erreur de CRC. La piste * est cependant la bonne. DATER EQU %00001000 DATA ERROR : Erreur sur les data : soit le DAM est * absent, il y a eu un overflow ou underflow, ou le CRC * est errone. DRNRD EQU %00010000 DRIVE NOT REAOY : La commande moteur renvoit toujours * un etat OFF, ou l'INDEX ne passe pas. VRFER EQU %00100000 VERIFY ERROR : L'option verification a amene a constater * une difference. CNTER EQU %01000000 CONTROLLER INOPERABLE : Impossibilite de ramener le * controleur a un etat voulu. FMTER EQU %10000000 NON FORMATTED DISQUETTE : ID de la disquette illisibles UTRK EQU %1000000000000000 UNKNOWN TRACK FLAG