Rev 801 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 801 | Rev 1069 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | 1 | ||
2 | ; ORG 0X6000 |
- | |
3 | - | ||
4 | ; rom programming example for PENTEVO |
- | |
5 | ; contains 2 parts: example and working procedures |
- | |
6 | - | ||
7 | - | ||
8 | ; prepare hardware |
- | |
9 | - | ||
10 | ; DI |
- | |
11 | - | ||
12 | ; LD A,3 |
- | |
13 | ; OUT (0XBF),A ; enable shadow ports, enable ROM write |
- | |
14 | - | ||
15 | - | ||
16 | ; write byte |
- | |
17 | ; |
- | |
18 | ; LD E,0X04 |
- | |
19 | ; LD HL,0X0001 |
- | |
20 | ; LD A,0X55 |
- | |
21 | ; CALL PGM_BYTE |
- | |
22 | - | ||
23 | ; LD HL,0X0123 |
- | |
24 | ; LD A,0XAA |
- | |
25 | ;CALL PGM_BYTE |
- | |
26 | - | ||
27 | - | ||
28 | ; erase 64Kb block |
- | |
29 | - | ||
30 | ; LD E,0X04 |
- | |
31 | ; LD HL,0X0000 |
- | |
32 | ; CALL ERASE_BLK |
- | |
33 | - | ||
34 | - | ||
35 | ; program 16k of shit |
- | |
36 | - | ||
37 | ; LD E,0X04 |
- | |
38 | ; LD HL,0X0000 |
- | |
39 | ; LD IX,0X8000 |
- | |
40 | ; LD BC,0X4000 |
- | |
41 | - | ||
42 | ;L2 |
- | |
43 | ; LD A,(IX) |
- | |
44 | ; CALL PGM_BYTE |
- | |
45 | - | ||
46 | ; INC IX |
- | |
47 | ;CALL INC_EHL |
- | |
48 | ; DEC BC |
- | |
49 | ; LD A,B |
- | |
50 | ; OR C |
- | |
51 | ; JR NZ,L2 |
- | |
52 | - | ||
53 | ; read page |
- | |
54 | - | ||
55 | ; LD E,0X04 |
- | |
56 | ; LD HL,0X0000 |
- | |
57 | ; LD IX,0X8000 |
- | |
58 | ; LD BC,0X4000 |
- | |
59 | ;L1 |
- | |
60 | ; CALL RDBYTE |
- | |
61 | ; LD (IX),A |
- | |
62 | - | ||
63 | ; CALL INC_EHL |
- | |
64 | ; INC IX |
- | |
65 | ; DEC BC |
- | |
66 | ; LD A,B |
- | |
67 | ; OR C |
- | |
68 | ; JR NZ,L1 |
- | |
69 | - | ||
70 | ; LD BC,0XFFF7 ;return RAM to 0XC000..0XFFFF |
- | |
71 | ; LD A,0XFF |
- | |
72 | ; OUT (C),A |
- | |
73 | - | ||
74 | ; LD A,0 |
- | |
75 | ; OUT (0XBF),A ; disable ports, disable ROM write |
- | |
76 | - | ||
77 | ; EI |
- | |
78 | ; RET |
- | |
79 | - | ||
80 | - | ||
81 | - | ||
82 | - | ||
83 | - | ||
84 | ;INC_EHL |
- | |
85 | ; INC L |
- | |
86 | ; RET NZ |
- | |
87 | ; INC H |
- | |
88 | ; RET NZ |
- | |
89 | ; INC E |
- | |
90 | ; RET |
- | |
91 | - | ||
92 | - | ||
93 | 2 | ||
94 | PGM_BYTE |
3 | PGM_BYTE |
95 | ; programs byte to the given location |
4 | ; programs byte to the given location |
96 | ; address in EHL (512kB only) |
5 | ; address in EHL (512kB only) |
97 | ; byte in A |
6 | ; byte in A |
Line 120... | Line 29... | ||
120 | POP AF |
29 | POP AF |
121 | POP HL |
30 | POP HL |
122 | POP DE |
31 | POP DE |
123 | CALL WRBYTE |
32 | CALL WRBYTE |
124 | 33 | ||
125 | JR ERR_END ; wait for end/error as always |
34 | JP ERR_END ; wait for end/error as always |
- | 35 | ||
- | 36 | sendCmd: |
|
- | 37 | ld bc,0xfff7 |
|
- | 38 | ld a,0x3f & (~(1)) |
|
- | 39 | out (c),a |
|
- | 40 | ld a,0xaa |
|
- | 41 | ld (0x1555 + 0xc000),a |
|
- | 42 | ||
- | 43 | ld a,0x3f & (~(0)) |
|
- | 44 | out (c),a |
|
- | 45 | ld a,0x55 |
|
- | 46 | ld (0x2aaa + 0xc000),a |
|
- | 47 | ||
- | 48 | ld a,0x3f & (~(1)) |
|
- | 49 | out (c),a |
|
- | 50 | ld a,e |
|
- | 51 | ld (0x1555 + 0xc000),a |
|
- | 52 | ret |
|
- | 53 | ||
- | 54 | rom_read_id ; out: hl - ChipID |
|
- | 55 | ||
- | 56 | ld e,0xf0 |
|
- | 57 | call sendCmd |
|
- | 58 | ||
- | 59 | ld e,0x90 |
|
- | 60 | call sendCmd |
|
- | 61 | ||
- | 62 | LD A,87 |
|
- | 63 | DEC A |
|
- | 64 | JR NZ,$-1 |
|
- | 65 | ||
- | 66 | ld hl,(0xc000) |
|
- | 67 | ||
- | 68 | ld e,0xf0 |
|
- | 69 | call sendCmd |
|
- | 70 | ||
- | 71 | ret |
|
- | 72 | ||
- | 73 | erase_all_chip |
|
- | 74 | ld e,0xf0 |
|
- | 75 | call sendCmd |
|
- | 76 | ||
- | 77 | ld e,0x80 |
|
- | 78 | call sendCmd |
|
- | 79 | ||
- | 80 | ld e,0x10 |
|
- | 81 | call sendCmd |
|
- | 82 | ||
- | 83 | ;now wait 100uS @ 14MHz to start actual block erase |
|
- | 84 | ||
- | 85 | LD A,87 |
|
- | 86 | DEC A |
|
- | 87 | JR NZ,$-1 |
|
- | 88 | ||
- | 89 | ld hl, 0xc000 |
|
- | 90 | ||
- | 91 | ERASE_ALL_LOOP |
|
- | 92 | ld a,(hl) |
|
- | 93 | xor (hl) |
|
- | 94 | jr nz,ERASE_ALL_LOOP |
|
- | 95 | ||
- | 96 | ld e,0xf0 |
|
- | 97 | call sendCmd |
|
- | 98 | ||
- | 99 | ret |
|
126 | 100 | ||
127 | 101 | ||
128 | ERASE_BLK |
102 | ERASE_BLK |
129 | ; erases 64kB block of ROM. |
103 | ; erases 64kB block of ROM. |
130 | ; block address is given in EHL (any addr in block) |
104 | ; block address is given in EHL (any addr in block) |