/* * fills screen with vertical lines */ #asm (main)test.asm ORG $A000 #endasm char toto[5]; int main() { char* i; for (i=0x4000;i<0x5F40;i++) { *i=0xAA; } if (toto[2]=='a') exit(); while (1); } #asm __init LDA #$60 | Fixe le TFR A,DP | DP $60 ORCC #$50 Gel des interruptions CLR $6019 Plus d'interruptions CLR $60D1 Reset du basic demande LDB $E7E7 | ANDB #$EF | Commutation RAM par PIA STB $E7E7 | LDB #$F0 | Les terminateurs STB $601A | de ligne pointent STB $601C | desormais en ROM STB $601E | RTS *--------------------------------------* * Module de chargement pour un fichier * * Entrees: * * A = Type du fichier * * B = Flag du fichier ($00/$FF) * * X = Pointeur sur nom de fichier * * U = Adresse d'implantation * *--------------------------------------* __load STD $60EB Type de fichier STX $60E7 Nom du fichier STU $60F1 Adr d'implantation * Chargement de la FAT JSR $E00D Charge la FAT BCS ERRIO Si "I/O Error" * Recherche du fichier LDA #1 | Initialise STA $60F0 | en LOAD JSR $E010 Recherche fichier TST $60F9 | Si $60F9 a 0, BEQ ERRNF | fich non trouv * Convertit numero de bloc LOAD0 JSR $E01F Convertit bloc STB $604B Initialise piste LDX $60ED Pointeur sur FAT LDB $60F6 Bloc courant INCB | Bloc LDB B,X | suivant STB $60F6 Sauve le bloc CMPB #$C0 | Si dernier bloc, BHI LOAD1 | recupre taille LDB #$08 8 secteurs a charg LOAD1 ANDB #$0F Isole taille bloc STA $604C Sauve premier bloc ADDB $604C Ajoute dpart bloc DECB Ajuste dern bloc STB $60F3 Sauve dernier bloc LDU $60F1 Rcupre ptr mem * Charge les secteurs LOAD2 JSR $E82A Charge le secteur BCS ERRIO Si "I/O Error" LDX $604F Ptr buffer secteur LDA $604C | Si secteur pas CMPA $60F3 | secteur maximum, BNE LOAD3 | passe LDA $60F6 | Si dernier CMPA #$C0 | secteur du BHI LOAD4 | fichier, sort BSR TFR Transfre donnes STU $60F1 Sauve implantation BRA LOAD0 Bloc suivant LOAD3 BSR TFR Transfre donnes INC $604C Secteur + 1 BRA LOAD2 Secteur suivant * Chargement dernier secteur et sortie LOAD4 LDD $60F7 Taille dern sect BEQ LOAD5 Si 0, sort BSR TFR0 Transfere donnees LOAD5 CLRA C de CC 0 RTS | * Transfert des donnes TFR LDB $6058 | Ajuste taille COMB | maximum du ORB #$80 | secteur TFR0 LDA ,X+ | STA ,U+ | Transfere DECB | les donnes BNE TFR0 | TFR1 RTS | #endasm