Subversion Repositories pentevo

Rev

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)