| 1 | /* |
|---|
| 2 | * fills screen with vertical lines |
|---|
| 3 | */ |
|---|
| 4 | |
|---|
| 5 | #asm |
|---|
| 6 | (main)test.asm |
|---|
| 7 | ORG $A000 |
|---|
| 8 | #endasm |
|---|
| 9 | |
|---|
| 10 | char toto[5]; |
|---|
| 11 | |
|---|
| 12 | int |
|---|
| 13 | main() { |
|---|
| 14 | |
|---|
| 15 | char* i; |
|---|
| 16 | for (i=0x4000;i<0x5F40;i++) { |
|---|
| 17 | *i=0xAA; |
|---|
| 18 | } |
|---|
| 19 | if (toto[2]=='a') exit(); |
|---|
| 20 | while (1); |
|---|
| 21 | } |
|---|
| 22 | |
|---|
| 23 | #asm |
|---|
| 24 | __init |
|---|
| 25 | LDA #$60 | Fixe le |
|---|
| 26 | TFR A,DP | DP $60 |
|---|
| 27 | ORCC #$50 Gel des interruptions |
|---|
| 28 | CLR $6019 Plus d'interruptions |
|---|
| 29 | CLR $60D1 Reset du basic demande |
|---|
| 30 | LDB $E7E7 | |
|---|
| 31 | ANDB #$EF | Commutation RAM par PIA |
|---|
| 32 | STB $E7E7 | |
|---|
| 33 | LDB #$F0 | Les terminateurs |
|---|
| 34 | STB $601A | de ligne pointent |
|---|
| 35 | STB $601C | desormais en ROM |
|---|
| 36 | STB $601E | |
|---|
| 37 | RTS |
|---|
| 38 | |
|---|
| 39 | *--------------------------------------* |
|---|
| 40 | * Module de chargement pour un fichier * |
|---|
| 41 | * Entrees: * |
|---|
| 42 | * A = Type du fichier * |
|---|
| 43 | * B = Flag du fichier ($00/$FF) * |
|---|
| 44 | * X = Pointeur sur nom de fichier * |
|---|
| 45 | * U = Adresse d'implantation * |
|---|
| 46 | *--------------------------------------* |
|---|
| 47 | __load |
|---|
| 48 | STD $60EB Type de fichier |
|---|
| 49 | STX $60E7 Nom du fichier |
|---|
| 50 | STU $60F1 Adr d'implantation |
|---|
| 51 | * Chargement de la FAT |
|---|
| 52 | JSR $E00D Charge la FAT |
|---|
| 53 | BCS ERRIO Si "I/O Error" |
|---|
| 54 | * Recherche du fichier |
|---|
| 55 | LDA #1 | Initialise |
|---|
| 56 | STA $60F0 | en LOAD |
|---|
| 57 | JSR $E010 Recherche fichier |
|---|
| 58 | TST $60F9 | Si $60F9 a 0, |
|---|
| 59 | BEQ ERRNF | fich non trouv |
|---|
| 60 | * Convertit numero de bloc |
|---|
| 61 | LOAD0 JSR $E01F Convertit bloc |
|---|
| 62 | STB $604B Initialise piste |
|---|
| 63 | LDX $60ED Pointeur sur FAT |
|---|
| 64 | LDB $60F6 Bloc courant |
|---|
| 65 | INCB | Bloc |
|---|
| 66 | LDB B,X | suivant |
|---|
| 67 | STB $60F6 Sauve le bloc |
|---|
| 68 | CMPB #$C0 | Si dernier bloc, |
|---|
| 69 | BHI LOAD1 | recupre taille |
|---|
| 70 | LDB #$08 8 secteurs a charg |
|---|
| 71 | LOAD1 ANDB #$0F Isole taille bloc |
|---|
| 72 | STA $604C Sauve premier bloc |
|---|
| 73 | ADDB $604C Ajoute dpart bloc |
|---|
| 74 | DECB Ajuste dern bloc |
|---|
| 75 | STB $60F3 Sauve dernier bloc |
|---|
| 76 | LDU $60F1 Rcupre ptr mem |
|---|
| 77 | * Charge les secteurs |
|---|
| 78 | LOAD2 JSR $E82A Charge le secteur |
|---|
| 79 | BCS ERRIO Si "I/O Error" |
|---|
| 80 | LDX $604F Ptr buffer secteur |
|---|
| 81 | LDA $604C | Si secteur pas |
|---|
| 82 | CMPA $60F3 | secteur maximum, |
|---|
| 83 | BNE LOAD3 | passe |
|---|
| 84 | LDA $60F6 | Si dernier |
|---|
| 85 | CMPA #$C0 | secteur du |
|---|
| 86 | BHI LOAD4 | fichier, sort |
|---|
| 87 | BSR TFR Transfre donnes |
|---|
| 88 | STU $60F1 Sauve implantation |
|---|
| 89 | BRA LOAD0 Bloc suivant |
|---|
| 90 | LOAD3 BSR TFR Transfre donnes |
|---|
| 91 | INC $604C Secteur + 1 |
|---|
| 92 | BRA LOAD2 Secteur suivant |
|---|
| 93 | * Chargement dernier secteur et sortie |
|---|
| 94 | LOAD4 LDD $60F7 Taille dern sect |
|---|
| 95 | BEQ LOAD5 Si 0, sort |
|---|
| 96 | BSR TFR0 Transfere donnees |
|---|
| 97 | LOAD5 CLRA C de CC 0 |
|---|
| 98 | RTS | |
|---|
| 99 | |
|---|
| 100 | * Transfert des donnes |
|---|
| 101 | TFR LDB $6058 | Ajuste taille |
|---|
| 102 | COMB | maximum du |
|---|
| 103 | ORB #$80 | secteur |
|---|
| 104 | TFR0 LDA ,X+ | |
|---|
| 105 | STA ,U+ | Transfere |
|---|
| 106 | DECB | les donnes |
|---|
| 107 | BNE TFR0 | |
|---|
| 108 | TFR1 RTS | |
|---|
| 109 | #endasm |
|---|
| 110 | |
|---|