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 | |
---|