Subversion Repositories ngs

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
69 savelij 1
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 1 - 1/17/2011 21:30:39
2
 
3
 
4
       1/       0 :                     
5
       2/       0 :                     		include macros.a80
6
(1)    1/       0 :                     
7
(1)    2/       0 :                     		RELAXED ON
8
(1)    3/       0 :                     		CPU Z80UNDOC
9
(1)    4/       0 :                     
10
(1)    5/       0 :                     DZ		MACRO DEFZ
11
(1)    6/       0 :                     		DB DEFZ,0
12
(1)    7/       0 :                     		ENDM 
13
(1)    8/       0 :                     
14
(1)    9/       0 :                     DC		MACRO DEFC
15
(1)   10/       0 :                     		IF STRLEN(DEFC)>1
16
(1)   11/       0 :                     		DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
17
(1)   12/       0 :                     		ENDIF
18
(1)   13/       0 :                     		IF STRLEN(DEFC)>0
19
(1)   14/       0 :                     		DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
20
(1)   15/       0 :                     		ENDIF
21
(1)   16/       0 :                     		ENDM
22
(1)   17/       0 :                     
23
(1)   18/       0 :                     SUM_HOB		MACRO STR,AA,BB,CC
24
(1)   19/       0 :                     		DB STR
25
(1)   20/       0 :                     		DW AA
26
(1)   21/       0 :                     		DW BB
27
(1)   22/       0 :                     		DW CC
28
(1)   23/       0 :                     $$I := 0
29
(1)   24/       0 :                     $$S := 0
30
(1)   25/       0 :                     		REPT 9
31
(1)   26/       0 :                     $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
32
(1)   27/       0 :                     $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
33
(1)   28/       0 :                     $$S := $$S+1
34
(1)   29/       0 :                     		ENDM
35
(1)   30/       0 :                     $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
36
(1)   31/       0 :                     $$S := $$S+1
37
(1)   32/       0 :                     $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
38
(1)   33/       0 :                     $$S := $$S+1
39
(1)   34/       0 :                     $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
40
(1)   35/       0 :                     $$S := $$S+1
41
(1)   36/       0 :                     $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
42
(1)   37/       0 :                     $$S := $$S+1
43
(1)   38/       0 :                     $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
44
(1)   39/       0 :                     $$S := $$S+1
45
(1)   40/       0 :                     $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
46
(1)   41/       0 :                     $$S := $$S+1
47
(1)   42/       0 :                     		DW $$I
48
(1)   43/       0 :                     		ENDM
49
(1)   44/       0 :                     
50
(1)   45/       0 :                     DUPL		MACRO LEN,FILL
51
(1)   46/       0 :                     DUPL:
52
(1)   47/       0 :                     $$N		EQU (LEN) / 1024
53
(1)   48/       0 :                     $$M		EQU (LEN) # 1024
54
(1)   49/       0 :                     		REPT $$N
55
(1)   50/       0 :                     		DB 1024 DUP(FILL)
56
(1)   51/       0 :                     		ENDM
57
(1)   52/       0 :                     		IF $$M <> 0
58
(1)   53/       0 :                     		DB $$M DUP(FILL)
59
(1)   54/       0 :                     		ENDIF
60
(1)   55/       0 :                     		ENDM
61
(1)   56/       0 :                     
62
(1)   57/       0 :                     HIGH		FUNCTION X,((X >> 8) & 0XFF)
63
(1)   58/       0 :                     LOW		FUNCTION X,(X & 0XFF)
64
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(macros.a80) - page 2 - 1/17/2011 21:30:39
65
 
66
 
67
(1)   59/       0 :                     
68
       3/       0 :                     
69
       4/       0 : =6000H              ADR_LOADING	EQU 0X6000			;адрес загрузки и компиляции
70
       5/       0 : =6000H              START_CODE	EQU ADR_LOADING
71
       6/       0 :                     
72
       7/    5EE9 :                     		ORG ADR_LOADING-0X117		;(END_HEADER-START_SCL)
73
       8/    5EE9 :                     ;ЗАГОЛОВОК SCL ФАЙЛА
74
       9/    5EE9 : 53 49 4E 43 4C 41   START_SCL	DB "SINCLAIR",1,"FLASHNGSB"
75
                    49 52 01 46 4C 41 
76
                    53 48 4E 47 53 42 
77
      10/    5EFB : 35 00 35 00         		DW BASIC_FULL,BASIC_FULL
78
      11/    5EFF : 19                  FULL_SIZE	DB SIZE_SECTORS+1
79
      12/    5F00 :                     
80
      13/    5F00 :                     		include basic4monoloader.a80
81
(1)    1/    5F00 :                     
82
(1)    2/    5F00 :                     ;BASIC BLOCK FOR MONOLOADER
83
(1)    3/    5F00 :                     
84
(1)    4/    5F00 : 00 01 30 00         BASIC_START	DW 0X100,BASIC_END-STROKA1
85
(1)    5/    5F04 : E7 C3 A7 3A         STROKA1		DB 0XE7,0XC3,0XA7,0X3A			;BORDER NOT PI:
86
(1)    6/    5F08 : D9 C3 A7 3A         		DB 0XD9,0XC3,0XA7,0X3A			;INK NOT PI:
87
(1)    7/    5F0C : DA C3 A7 3A         		DB 0XDA,0XC3,0XA7,0X3A			;PAPER NOT INK:
88
(1)    8/    5F10 : FD B0 22 32 34 35   		DB 0XFD,0XB0,0X22,"24575",0X22,0X3A	;CLEAR VAL "ADDRESS":
89
                    37 35 22 3A 
90
(1)    9/    5F1A : F9 C0 B0 22 32 33   		DB 0XF9,0XC0,0XB0,0X22,"23905",0X22	;RANDOMIZE USR VAL "ADDRESS"
91
                    39 30 35 22 
92
(1)   10/    5F24 : 3A EA               		DB 0X3A,0XEA
93
(1)   11/    5F26 :                     
94
(1)   12/    5F26 : ED 5B F4 5C         		LD DE,(0X5CF4)
95
(1)   13/    5F2A : 01 05 18            		LD BC,SIZE_SECTORS*256+5
96
(1)   14/    5F2D : 21 00 60            		LD HL,ADR_LOADING
97
(1)   15/    5F30 : E5                  		PUSH HL
98
(1)   16/    5F31 : C3 13 3D            		JP 0X3D13
99
(1)   17/    5F34 :                     
100
(1)   18/    5F34 : 0D 80 AA            BASIC_END	DB 0X0D,0X80,0XAA
101
(1)   19/    5F37 : 01 00               		DW 1					;НОМЕР СТРОКИ ЗАПУСКА
102
(1)   20/    5F39 :                     
103
(1)   21/    5F39 : =35H                BASIC_FULL	EQU BASIC_END-BASIC_START+1
104
(1)   22/    5F39 :                     
105
(1)   23/    5F39 : (MACRO)             		DUPL 0X100-BASIC_FULL-4,0		;ДОПОЛНЕНИЕ ДО СЕКТОРА 256 БАЙТ
106
(1)   23/    5F39 :                     DUPL:
107
(1)   23/    5F39 : =0H                 $$N             EQU (0X100-BASIC_FULL-4) / 1024
108
(1)   23/    5F39 : =C7H                $$M             EQU (0X100-BASIC_FULL-4) # 1024
109
(1)   23/    5F39 :                                     REPT $$N
110
(1)   23/    5F39 :                                     DB 1024 DUP(0)
111
(1)   23/    5F39 :                                     ENDM
112
(1)   23/    5F39 : =>TRUE                              IF $$M <> 0
113
(1)   23/    5F39 : 00 00 00 00 00 00                   DB $$M DUP(0)
114
                    00 00 00 00 00 00 
115
                    00 00 00 00 00 00 
116
                    00 00 00 00 00 00 
117
                    00 00 00 00 00 00 
118
                    00 00 00 00 00 00 
119
                    00 00 00 00 00 00 
120
                    00 00 00 00 00 00 
121
                    00 00 00 00 00 00 
122
                    00 00 00 00 00 00 
123
                    00 00 00 00 00 00 
124
                    00 00 00 00 00 00 
125
                    00 00 00 00 00 00 
126
                    00 00 00 00 00 00 
127
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(basic4monoloader.a80) - page 3 - 1/17/2011 21:30:39
128
 
129
 
130
                    00 00 00 00 00 00 
131
                    00 00 00 00 00 00 
132
                    00 00 00 00 00 00 
133
                    00 00 00 00 00 00 
134
                    00 00 00 00 00 00 
135
                    00 00 00 00 00 00 
136
                    00 00 00 00 00 00 
137
                    00 00 00 00 00 00 
138
                    00 00 00 00 00 00 
139
                    00 00 00 00 00 00 
140
                    00 00 00 00 00 00 
141
                    00 00 00 00 00 00 
142
                    00 00 00 00 00 00 
143
                    00 00 00 00 00 00 
144
                    00 00 00 00 00 00 
145
                    00 00 00 00 00 00 
146
                    00 00 00 00 00 00 
147
                    00 00 00 00 00 00 
148
                    00 00 00 00 00 00 
149
                    00 
150
(1)   23/    6000 : [23]                                ENDIF
151
(1)   24/    6000 :                     	
152
(1)   25/    6000 :                     	
153
      14/    6000 :                     
154
      15/    6000 :                     ;END_HEADER
155
      16/    6000 :                     	
156
      17/    6000 :                     		ORG ADR_LOADING
157
      18/    6000 :                     
158
      19/    6000 : 21 00 60            		LD HL,$
159
      20/    6003 : E5                  		PUSH HL
160
      21/    6004 : 21 21 60            		LD HL,START_UNPACK
161
      22/    6007 : 11 00 5B            		LD DE,0X5B00
162
      23/    600A : 01 6E 00            		LD BC,END_UNPACK-START_UNPACK
163
      24/    600D : D5                  		PUSH DE
164
      25/    600E : ED B0               		LDIR
165
      26/    6010 : 21 2B 77            		LD HL,END_COD-1
166
      27/    6013 : 11 FF FF            		LD DE,0XFFFF
167
      28/    6016 : 01 9D 16            		LD BC,END_COD-END_UNPACK
168
      29/    6019 : ED B8               		LDDR
169
      30/    601B : 21 00 60            		LD HL,ADR_LOADING
170
      31/    601E : EB                  		EX DE,HL
171
      32/    601F : 23                  		INC HL
172
      33/    6020 : C9                  		RET
173
      34/    6021 :                     		
174
      35/    6021 :                     START_UNPACK	include dec40.a80
175
(1)    1/    6021 :                     ;Z80 depacker for megalz V4 packed files   (C) fyrex^mhm
176
(1)    2/    6021 :                     
177
(1)    3/    6021 :                     ; DESCRIPTION:
178
(1)    4/    6021 :                     ;
179
(1)    5/    6021 :                     ; Depacker is fully relocatable, not self-modifying,
180
(1)    6/    6021 :                     ;it's length is 110 bytes starting from DEC40.
181
(1)    7/    6021 :                     ;Register usage: AF,AF',BC,DE,HL. Must be CALL'ed, return is done by RET.
182
(1)    8/    6021 :                     ;Provide extra stack location for store 2 bytes (1 word). Depacker does not
183
(1)    9/    6021 :                     ;disable or enable interrupts, as well as could be interrupted at any time
184
(1)   10/    6021 :                     ;(no f*cking wicked stack usage :).
185
(1)   11/    6021 :                     
186
(1)   12/    6021 :                     ; USAGE:
187
(1)   13/    6021 :                     ;
188
(1)   14/    6021 :                     ; - put depacker anywhere you want,
189
(1)   15/    6021 :                     ; - put starting address of packed block in HL,
190
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(dec40.a80) - page 4 - 1/17/2011 21:30:39
191
 
192
 
193
(1)   16/    6021 :                     ; - put location where you want data to be depacked in DE,
194
(1)   17/    6021 :                     ;   (much like LDIR command, but without BC)
195
(1)   18/    6021 :                     ; - make CALL to depacker (DEC40).
196
(1)   19/    6021 :                     ; - enjoy! ;)
197
(1)   20/    6021 :                     
198
(1)   21/    6021 :                     ; PRECAUTIONS:
199
(1)   22/    6021 :                     ;
200
(1)   23/    6021 :                     ; Be very careful if packed and depacked blocks coincide somewhere in memory.
201
(1)   24/    6021 :                     ;Here are some advices:
202
(1)   25/    6021 :                     ;
203
(1)   26/    6021 :                     ; 1. put packed block to the highest addresses possible.
204
(1)   27/    6021 :                     ;     Best if last byte of packed block has address #FFFF.
205
(1)   28/    6021 :                     ;
206
(1)   29/    6021 :                     ; 2. Leave some gap between ends of packed and depacked block.
207
(1)   30/    6021 :                     ;     For example, last byte of depacked block at #FF00,
208
(1)   31/    6021 :                     ;     last byte of packed block at #FFFF.
209
(1)   32/    6021 :                     ;
210
(1)   33/    6021 :                     ; 3. Place nonpackable data to the end of block.
211
(1)   34/    6021 :                     ;
212
(1)   35/    6021 :                     ; 4. Always check whether depacking occurs OK and neither corrupts depacked data
213
(1)   36/    6021 :                     ;     nor hangs computer.
214
(1)   37/    6021 :                     ;
215
(1)   38/    6021 :                     
216
(1)   39/    6021 :                     DEC40
217
(1)   40/    6021 : 3E 80                       LD      A,0X80
218
(1)   41/    6023 : 08                          EX      AF,AF'
219
(1)   42/    6024 : ED A0               MS      LDI
220
(1)   43/    6026 : 01 FF 02            M0      LD      BC,0X2FF
221
(1)   44/    6029 : 08                  M1      EX      AF,AF'
222
(1)   45/    602A : 87                  M1X     ADD     A,A
223
(1)   46/    602B : 20 03                       JR      NZ,M2
224
(1)   47/    602D : 7E                          LD      A,(HL)
225
(1)   48/    602E : 23                          INC     HL
226
(1)   49/    602F : 17                          RLA
227
(1)   50/    6030 : CB 11               M2      RL      C
228
(1)   51/    6032 : 30 F6                       JR      NC,M1X
229
(1)   52/    6034 : 08                          EX      AF,AF'
230
(1)   53/    6035 : 10 0F                       DJNZ    X2
231
(1)   54/    6037 : 3E 02                       LD      A,2
232
(1)   55/    6039 : CB 29                       SRA     C
233
(1)   56/    603B : 38 18                       JR      C,N1
234
(1)   57/    603D : 3C                          INC     A
235
(1)   58/    603E : 0C                          INC     C
236
(1)   59/    603F : 28 0F                       JR      Z,N2
237
(1)   60/    6041 : 01 3F 03                    LD      BC,0X33F
238
(1)   61/    6044 : 18 E3                       JR      M1
239
(1)   62/    6046 :                     
240
(1)   63/    6046 : 10 25               X2      DJNZ    X3
241
(1)   64/    6048 : CB 39                       SRL     C
242
(1)   65/    604A : 38 D8                       JR      C,MS
243
(1)   66/    604C : 04                          INC     B
244
(1)   67/    604D : 18 DA                       JR      M1
245
(1)   68/    604F :                     X6
246
(1)   69/    604F : 81                          ADD     A,C
247
(1)   70/    6050 :                     N2
248
(1)   71/    6050 : 01 FF 04                    LD      BC,0X4FF
249
(1)   72/    6053 : 18 D4                       JR      M1
250
(1)   73/    6055 :                     N1
251
(1)   74/    6055 : 0C                          INC     C
252
(1)   75/    6056 : 20 28                       JR      NZ,M4
253
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(dec40.a80) - page 5 - 1/17/2011 21:30:39
254
 
255
 
256
(1)   76/    6058 : 08                          EX      AF,AF'
257
(1)   77/    6059 : 04                          INC     B
258
(1)   78/    605A : CB 19               N5      RR      C
259
(1)   79/    605C : D8                          RET     C
260
(1)   80/    605D : CB 10                       RL      B
261
(1)   81/    605F : 87                          ADD     A,A
262
(1)   82/    6060 : 20 03                       JR      NZ,N6
263
(1)   83/    6062 : 7E                          LD      A,(HL)
264
(1)   84/    6063 : 23                          INC     HL
265
(1)   85/    6064 : 17                          RLA
266
(1)   86/    6065 : 30 F3               N6      JR      NC,N5
267
(1)   87/    6067 : 08                          EX      AF,AF'
268
(1)   88/    6068 : 80                          ADD     A,B
269
(1)   89/    6069 : 06 06                       LD      B,6
270
(1)   90/    606B : 18 BC                       JR      M1
271
(1)   91/    606D :                     X3
272
(1)   92/    606D : 10 04                       DJNZ    X4
273
(1)   93/    606F : 3E 01                       LD      A,1
274
(1)   94/    6071 : 18 0F                       JR      M3
275
(1)   95/    6073 : 10 08               X4      DJNZ    X5
276
(1)   96/    6075 : 0C                          INC     C
277
(1)   97/    6076 : 20 08                       JR      NZ,M4
278
(1)   98/    6078 : 01 1F 05                    LD      BC,0X51F
279
(1)   99/    607B : 18 AC                       JR      M1
280
(1)  100/    607D :                     X5
281
(1)  101/    607D : 10 D0                       DJNZ    X6
282
(1)  102/    607F : 41                          LD      B,C
283
(1)  103/    6080 : 4E                  M4      LD      C,(HL)
284
(1)  104/    6081 : 23                          INC     HL
285
(1)  105/    6082 : 05                  M3      DEC     B
286
(1)  106/    6083 : E5                          PUSH    HL
287
(1)  107/    6084 : 69                          LD      L,C
288
(1)  108/    6085 : 60                          LD      H,B
289
(1)  109/    6086 : 19                          ADD     HL,DE
290
(1)  110/    6087 : 4F                          LD      C,A
291
(1)  111/    6088 : 06 00                       LD      B,0
292
(1)  112/    608A : ED B0                       LDIR
293
(1)  113/    608C : E1                          POP     HL
294
(1)  114/    608D : 18 97                       JR      M0
295
(1)  115/    608F :                     END_DEC40
296
(1)  116/    608F :                     
297
      36/    608F :                     END_UNPACK
298
      37/    608F :                     		binclude flasher_pack.rom	;имя пакованной проги
299
      38/    772C :                     END_COD
300
      39/    772C :                     
301
      40/    772C : =>TRUE              		IF (END_COD-ADR_LOADING)&0XFF
302
      41/    772C : =18H                SIZE_SECTORS	EQU ((END_COD-ADR_LOADING)>>8)+1
303
      42/    772C : =>FALSE             		ELSE
304
      43/    772C :                     SIZE_SECTORS	EQU ((END_COD-ADR_LOADING)>>8)
305
      44/    772C : [40]                		ENDIF
306
      45/    772C :                     
307
      46/    772C :                     
308
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 6 - 1/17/2011 21:30:39
309
 
310
 
311
  symbol table (* = unused):
312
  ------------------------
313
 
314
 ADR_LOADING :                 6000 - | *ARCHITECTURE :  i386-unknown-win32 - |
315
 BASIC_END :                   5F34 C |  BASIC_FULL :                    35 - |
316
 BASIC_START :                 5F00 C | *BIGENDIAN :                      0 - |
317
*BRANCHEXT :                      0 - | *CASESENSITIVE :                  1 - |
318
*CONSTPI :        3.141592653589793 - | *DATE :                   1/17/2011 - |
319
*DEC40 :                       6021 C |  END_COD :                     772C C |
320
*END_DEC40 :                   608F C |  END_UNPACK :                  608F C |
321
*FALSE :                          0 - | *FULLPMMU :                       1 - |
322
*FULL_SIZE :                   5EFF C | *HAS64 :                          1 - |
323
*HASDSP :                         0 - | *HASFPU :                         0 - |
324
*HASPMMU :                        0 - | *INEXTMODE :                      0 - |
325
*INLWORDMODE :                    0 - | *INMAXMODE :                      0 - |
326
*INSRCMODE :                      0 - | *INSUPMODE :                      0 - |
327
*LISTON :                         1 - |  M0 :                          6026 C |
328
 M1 :                          6029 C |  M14 :                           C7 - |
329
 M1X :                         602A C |  M2 :                          6030 C |
330
 M3 :                          6082 C |  M4 :                          6080 C |
331
*MACEXP :                         1 - | *MOMCPU :                      80DC - |
332
*MOMCPUNAME :              Z80UNDOC - |  MS :                          6024 C |
333
 N1 :                          6055 C |  N14 :                            0 - |
334
 N2 :                          6050 C |  N5 :                          605A C |
335
 N6 :                          6065 C | *NESTMAX :                      100 - |
336
*PACKING :                        0 - | *PADDING :                        1 - |
337
*RELAXED :                        1 - |  SIZE_SECTORS :                  18 - |
338
*START_CODE :                  6000 - | *START_SCL :                   5EE9 C |
339
 START_UNPACK :                6021 C |  STROKA1 :                     5F04 C |
340
*TIME :                    21:30:39 - | *TRUE :                           1 - |
341
*VERSION :                     142F - |  X2 :                          6046 C |
342
 X3 :                          606D C |  X4 :                          6073 C |
343
 X5 :                          607D C |  X6 :                          604F C |
344
 
345
     60 symbols
346
     33 unused symbols
347
 
348
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 7 - 1/17/2011 21:30:39
349
 
350
 
351
  defined macros:
352
  ---------------
353
 
354
DC                                    | DUPL                                 
355
DZ                                    | SUM_HOB                              
356
 
357
      4 macros
358
 
359
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 8 - 1/17/2011 21:30:39
360
 
361
 
362
  defined functions:
363
  ------------------
364
 
365
LOW                                   | HIGH                                 
366
 
367
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 9 - 1/17/2011 21:30:39
368
 
369
 
370
  codepages:
371
  ----------
372
 
373
STANDARD (0 changed characters)
374
 
375
 
376
0.06 seconds assembly time
377
 
378
    246 lines source file
379
    255 lines incl. macro expansions
380
      2 passes
381
 
382