annotate Examples/6502/run.tokio @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3 read intel hex data from file
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 :10000000D8A201A00120090000E000D003C8986038
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 :10001000C000D006CAA0014C09008A488820090007
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 :05002000A868AACA60F7
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 :00000001FF
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 write into internal memory. (assert )
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 run0(Filename) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 fname(Filename,".hex",Filename1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 ld0(Filename1),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 *p := 0, *reset := 0, *s := 0, *b := 0, *so := 0, *y := 0, *x := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 *dl := 0, *a := 0, *c := 0, *z := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 *mem(hex("FFFC")) := 0, *mem(hex("FFFD")) := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 *mem(hex("FFFE")) := 0, *mem(hex("FFFF")) := 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 && run.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 run(Filename) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 fname(Filename,".hex",Filename1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 ld0(Filename1),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 *p := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 *reset := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 *s := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 *b := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 *so := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 *y := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 *x := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 *dl := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 *a := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 *c := 0, *z := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 *mem(hex("FFFC")) := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 *mem(hex("FFFD")) := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 *mem(hex("FFFE")) := 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 *mem(hex("FFFF")) := 0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 && X <- cputime, run, fin((
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 X1 = cputime - X,nl,write(X1),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 fname(Output,Option,Loutput) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 name(Output,L),append(L,Option,LC),name(Loutput,LC).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 append([H|X],Y,[H|Z]) :- append(X,Y,Z).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 append([],X,X) .
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 ld0(File) :- seeing(O),ld1(File,Lines),seen,see(O).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 ld1(File,Lines) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 % abolish(mem,2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 see(File), % nofileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 get0(Ch),lines(Ch),!,seen.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 ld1(File,Lines) :- seen, % fileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 lines(-1) :-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 lines(26) :-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 lines(58) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 get0(C), count(N,[C|N],1,I),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 get0(C0), count(N1,[C0|N1],3,Adr0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 get0(C1), count(N2,[C1|N2],1,Adr1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 Adr = Adr1*65536+Adr0+I,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 data(I,Adr),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 get0(NNC), lines(NNC).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 lines(X) :- get0(C),lines(C).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 count([],NC,0,I) :-!, hex(NC,I).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 count([H|T],NC,N,I) :- N1 = N-1, get0(H),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 count(T,NC,N1,I).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76 hex(L,V) :- hex(L,V,0).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 hex([],V,V) :-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 hex([H|T],Y,V) :- H>47,H<58, !,V1 = V*16+H-48,hex(T,Y,V1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 hex([H|T],Y,V) :- H>64,H<71, !,V1 = V*16+H-65+10,hex(T,Y,V1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 hex([H|T],Y,V) :- H>96,H<103,!,V1 = V*16+H-97+10,hex(T,Y,V1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83 data(0,_) :-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84 data(N,Adr) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85 get0(C),count(T,[C|T],1,Data),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 Adr1 = Adr-N,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 % assert(mem(Adr1,Data)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88 *mem(Adr1) := Data,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 N1 = N-1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 data(N1,Adr).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91