[1] | 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 | |
---|