Rev 1120 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
244 | savelij | 1 | |
1186 | savelij | 2 | ; LAST UPDATE: 13.02.2025 savelij |
585 | savelij | 3 | |
961 | savelij | 4 | ; ⮮। ࠡ⠥ ࠢ쭮 |
665 | savelij | 5 | |
244 | savelij | 6 | RELAXED ON |
7 | CPU Z80UNDOC |
||
8 | |||
782 | savelij | 9 | BUILD_DEBUG EQU 0 |
585 | savelij | 10 | |
952 | savelij | 11 | IFDEF DOS_FE |
961 | savelij | 12 | ;TESTEMUFDD ; ᡮઠ |
952 | savelij | 13 | ENDIF |
14 | |||
961 | savelij | 15 | ; ⠢ ⥪⮢ ப 㫥 砭 |
244 | savelij | 16 | DZ MACRO DEFZ |
17 | DB DEFZ,0 |
||
18 | ENDM |
||
19 | |||
961 | savelij | 20 | ; ⠢ ⥪⮢ ப ⠭ 7 ᨬ |
244 | savelij | 21 | DC MACRO DEFC |
1186 | savelij | 22 | IF STRLEN(DEFC) > 1 |
244 | savelij | 23 | DB SUBSTR(DEFC,0,STRLEN(DEFC)-1) |
999 | savelij | 24 | ENDIF |
1186 | savelij | 25 | IF STRLEN(DEFC) > 0 |
244 | savelij | 26 | DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H |
999 | savelij | 27 | ENDIF |
244 | savelij | 28 | ENDM |
29 | |||
961 | savelij | 30 | ; Hobeta 䠩 |
289 | savelij | 31 | SUM_HOB MACRO STR,AA,BB,CC |
32 | DB STR |
||
33 | DW AA |
||
34 | DW BB |
||
501 | savelij | 35 | DB 0 |
36 | DB CC |
||
289 | savelij | 37 | $$I := 0 |
38 | $$S := 0 |
||
39 | REPT 9 |
||
40 | $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9) |
||
1186 | savelij | 41 | $$I := ($$I+$$S+$$N+($$N*256))&0xFFFF |
289 | savelij | 42 | $$S := $$S+1 |
43 | ENDM |
||
1186 | savelij | 44 | $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0x100))&0xFFFF |
309 | savelij | 45 | $$S := $$S+1 |
1186 | savelij | 46 | $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0x100))&0xFFFF |
309 | savelij | 47 | $$S := $$S+1 |
1186 | savelij | 48 | $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0x100))&0xFFFF |
309 | savelij | 49 | $$S := $$S+1 |
1186 | savelij | 50 | $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0x100))&0xFFFF |
309 | savelij | 51 | $$S := $$S+1 |
1186 | savelij | 52 | $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0x100))&0xFFFF |
309 | savelij | 53 | $$S := $$S+1 |
1186 | savelij | 54 | $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0x100))&0xFFFF |
309 | savelij | 55 | $$S := $$S+1 |
289 | savelij | 56 | DW $$I |
57 | ENDM |
||
58 | |||
961 | savelij | 59 | ; 㪠 ⮬ 㫥 ⢨ ண ࠬ |
244 | savelij | 60 | DUPL MACRO LEN,FILL |
61 | DUPL: |
||
62 | $$N EQU (LEN) / 1024 |
||
63 | $$M EQU (LEN) # 1024 |
||
64 | REPT $$N |
||
65 | DB 1024 DUP(FILL) |
||
66 | ENDM |
||
999 | savelij | 67 | IF $$M <> 0 |
68 | IFB FILL |
||
736 | savelij | 69 | DB $$M DUP(0) |
999 | savelij | 70 | ELSE |
244 | savelij | 71 | DB $$M DUP(FILL) |
999 | savelij | 72 | ENDIF |
73 | ENDIF |
||
244 | savelij | 74 | ENDM |
75 | |||
961 | savelij | 76 | ; 訩 |
1186 | savelij | 77 | HIGH FUNCTION X,((X >> 8) & 0xFF) |
961 | savelij | 78 | ; 訩 |
1186 | savelij | 79 | LOW FUNCTION X,(X & 0xFF) |
585 | savelij | 80 | |
961 | savelij | 81 | ; 맮 ணࠬ 㣮 ࠭ ROM |
831 | savelij | 82 | ROMCALL MACRO ADR,PAGE |
1186 | savelij | 83 | RST 0x30 |
585 | savelij | 84 | DW ADR |
85 | DB PAGE |
||
86 | ENDM |
||
87 | |||
961 | savelij | 88 | ; 맮 ணࠬ 㣮 ࠭ RAM |
831 | savelij | 89 | RAMCALL MACRO ADR,PAGE |
1186 | savelij | 90 | RST 0x20 |
831 | savelij | 91 | DW ADR |
92 | DB PAGE |
||
93 | ENDM |
||
94 | |||
961 | savelij | 95 | ; ATM Turbo 2+ |
646 | savelij | 96 | ATMPORT MACRO PORT,BYTE |
97 | LD BC,PORT |
||
831 | savelij | 98 | IF BYTE = 0 |
99 | XOR A |
||
100 | ELSE |
||
646 | savelij | 101 | LD A,BYTE |
831 | savelij | 102 | ENDIF |
646 | savelij | 103 | OUT (C),A |
104 | ENDM |
||
105 | |||
961 | savelij | 106 | ; ७ ⮢ PentEvo |
585 | savelij | 107 | EVOPORT MACRO PORT,BYTE |
108 | LD BC,PORT |
||
831 | savelij | 109 | IF BYTE = 0 |
110 | XOR A |
||
111 | ELSE |
||
585 | savelij | 112 | LD A,BYTE |
831 | savelij | 113 | ENDIF |
585 | savelij | 114 | OUT (C),A |
115 | ENDM |
||
116 | |||
961 | savelij | 117 | ; 祭 (⮢) 0xBF |
585 | savelij | 118 | PEC_ON MACRO BYTE |
119 | IN A,(PEVO_CONF) |
||
120 | OR BYTE |
||
121 | OUT (PEVO_CONF),A |
||
122 | ENDM |
||
123 | |||
961 | savelij | 124 | ; (⮢) 0xBF |
585 | savelij | 125 | PEC_OFF MACRO BYTE |
126 | IN A,(PEVO_CONF) |
||
1186 | savelij | 127 | AND BYTE!0xFF |
585 | savelij | 128 | OUT (PEVO_CONF),A |
129 | ENDM |
||
130 | |||
961 | savelij | 131 | ; ⥭ 0x7FFD |
736 | savelij | 132 | READ_7FFD MACRO |
133 | LD A,HIGH (RD_7FFD) |
||
134 | IN A,(LOW (RD_7FFD)) |
||
135 | ENDM |
||
136 | |||
961 | savelij | 137 | ; |
964 | savelij | 138 | ; LINUX DATE: "10/07/21" |
139 | ; WIN32 DATE: "10/7/2021" |
||
585 | savelij | 140 | SIZEDATE EQU STRLEN (DATE) |
964 | savelij | 141 | __POS := 0 |
142 | ; 祭 |
||
143 | MMOUNTH := (CHARFROMSTR (DATE,__POS) - '0') |
||
144 | __POS := __POS + 1 |
||
1120 | savelij | 145 | IF (CHARFROMSTR (DATE,__POS)) > '/' |
146 | MMOUNTH := MMOUNTH * 10 + (CHARFROMSTR (DATE,__POS)) -'0' |
||
964 | savelij | 147 | __POS := __POS + 1 |
961 | savelij | 148 | ENDIF |
1120 | savelij | 149 | __POS := __POS + 1 |
964 | savelij | 150 | ; 祭 |
151 | DDATE := (CHARFROMSTR (DATE,__POS) - '0') |
||
152 | __POS := __POS + 1 |
||
1120 | savelij | 153 | IF (CHARFROMSTR (DATE,__POS)) > '/' |
154 | DDATE := DDATE * 10 + (CHARFROMSTR (DATE,__POS)) - '0' |
||
964 | savelij | 155 | __POS := __POS + 1 |
156 | ENDIF |
||
1120 | savelij | 157 | __POS := __POS + 1 |
964 | savelij | 158 | ; 祭 |
159 | YYEAR := (CHARFROMSTR (DATE,__POS) - '0') |
||
160 | __POS := __POS + 1 |
||
1120 | savelij | 161 | WHILE (CHARFROMSTR (DATE,__POS)) > '/' |
162 | YYEAR := YYEAR * 10 + (CHARFROMSTR (DATE,__POS)) - '0' |
||
964 | savelij | 163 | __POS := __POS + 1 |
1120 | savelij | 164 | IF __POS > SIZEDATE |
165 | EXITM |
||
964 | savelij | 166 | ENDIF |
167 | ENDM |
||
168 | IF YYEAR > 99 |
||
169 | YYEAR := YYEAR - 2000 |
||
170 | ENDIF |
||
780 | savelij | 171 | |
961 | savelij | 172 | ; ६ |
967 | savelij | 173 | ; "9:28:8" |
964 | savelij | 174 | SIZETIME EQU STRLEN (TIME) |
175 | __POS := 0 |
||
176 | ; 祭 |
||
177 | HHOUR := CHARFROMSTR (TIME, __POS) - '0' |
||
178 | __POS := __POS + 1 |
||
1120 | savelij | 179 | IF (CHARFROMSTR (TIME,__POS)) <= '9' |
964 | savelij | 180 | HHOUR := HHOUR * 10 + CHARFROMSTR (TIME, __POS) - '0' |
181 | __POS := __POS + 1 |
||
961 | savelij | 182 | ENDIF |
1120 | savelij | 183 | __POS := __POS + 1 |
964 | savelij | 184 | ; 祭 |
185 | MMINUTE := CHARFROMSTR (TIME, __POS) - '0' |
||
186 | __POS := __POS + 1 |
||
1120 | savelij | 187 | IF (CHARFROMSTR (TIME,__POS)) <= '9' |
964 | savelij | 188 | MMINUTE := MMINUTE * 10 + CHARFROMSTR (TIME, __POS) - '0' |
189 | __POS := __POS + 1 |
||
961 | savelij | 190 | ENDIF |
1120 | savelij | 191 | __POS := __POS + 1 |
964 | savelij | 192 | ; 祭 ᥪ㭤 |
193 | SSECUND := CHARFROMSTR (TIME, __POS) - '0' |
||
194 | __POS := __POS + 1 |
||
195 | IF __POS < SIZETIME |
||
196 | SSECUND := SSECUND * 10 + CHARFROMSTR (TIME, __POS) - '0' |
||
197 | ENDIF |
||
780 | savelij | 198 | |
964 | savelij | 199 | DATA_VERS EQU DDATE + (MMOUNTH << 5) + (YYEAR<<9) + 0x8000 ;㦥 㯠 |
585 | savelij | 200 | |
964 | savelij | 201 | FAT_DATE EQU DDATE + (MMOUNTH << 5) + ((2000 + YYEAR - 1980) & 0x7F) << 9 |
202 | FAT_TIME EQU SSECUND / 2 + (MMINUTE << 5) + (HHOUR << 11) |
||
780 | savelij | 203 | |
961 | savelij | 204 | ; ६ ⥪⮢ |
585 | savelij | 205 | TEXTDATE MACRO |
964 | savelij | 206 | DB (DDATE / 10) + '0', (DDATE # 10) + '0', '.' |
207 | DB MMOUNTH / 10 + '0', MMOUNTH # 10 + '0', '.' |
||
208 | DB CHARFROMSTR (DATE, SIZEDATE - 4), CHARFROMSTR (DATE, SIZEDATE - 3) |
||
209 | DB CHARFROMSTR (DATE, SIZEDATE - 2), CHARFROMSTR (DATE, SIZEDATE - 1) |
||
585 | savelij | 210 | ENDM |
678 | savelij | 211 | |
964 | savelij | 212 | TEXTTIME MACRO |
213 | DB HHOUR/10 + '0', HHOUR#10 + '0', '.' |
||
214 | DB MMINUTE/10 + '0', MMINUTE#10 + '0', '.' |
||
215 | DB SSECUND/10 + '0', SSECUND#10 + '0' |
||
216 | ENDM |
||
217 | |||
961 | savelij | 218 | ; 맮 RST 8 ࠬࠬ |
678 | savelij | 219 | RST8 MACRO N1,N2,N3 |
220 | RST 8 |
||
221 | DB N1 |
||
961 | savelij | 222 | IFNB N2 |
678 | savelij | 223 | DB N2 |
961 | savelij | 224 | ENDIF |
225 | IFNB N3 |
||
678 | savelij | 226 | DB N3 |
961 | savelij | 227 | ENDIF |
678 | savelij | 228 | ENDM |
736 | savelij | 229 | |
230 | BYTE EQU 1 |
||
231 | WORD EQU 2 |
||
232 | JUMP EQU 3 |
||
233 | DWORD EQU 4 |
||
234 | QWORD EQU 8 |
||
235 | |||
236 | BITMASK MACRO NAME,NUM |
||
237 | B_NAME EQU NUM |
||
1186 | savelij | 238 | M_NAME EQU 1 << NUM |
736 | savelij | 239 | ENDM |
240 | |||
1186 | savelij | 241 | _BITMASK MACRO NAME,NUM |
242 | .B_NAME EQU NUM |
||
243 | .M_NAME EQU 1 << NUM |
||
244 | ENDM |
||
245 | ; ⪨ १ࢨ ࠧ ( ) |
||
736 | savelij | 246 | SETVAR MACRO NAME,SIZE |
961 | savelij | 247 | NAME EQU INITVAR ; |
999 | savelij | 248 | IFNB SIZE |
1186 | savelij | 249 | INITVAR := INITVAR + SIZE |
961 | savelij | 250 | NAME_Size EQU SIZE ; ࠧ |
999 | savelij | 251 | ELSE |
1186 | savelij | 252 | INITVAR := INITVAR + BYTE |
775 | savelij | 253 | NAME_Size EQU BYTE |
999 | savelij | 254 | ENDIF |
962 | savelij | 255 | NAME_CurAdr EQU $ ; ⥪騩 |
736 | savelij | 256 | ENDM |
257 | |||
1186 | savelij | 258 | ; ⪨ १ࢨ ࠧ ( ) |
259 | MINUSVAR MACRO NAME,SIZE |
||
260 | IFNB SIZE |
||
261 | INITVAR := INITVAR - SIZE |
||
262 | NAME_Size EQU SIZE ; ࠧ |
||
263 | ELSE |
||
264 | INITVAR := INITVAR - BYTE |
||
265 | NAME_Size EQU BYTE |
||
266 | ENDIF |
||
267 | NAME_CurAdr EQU $ ; ⥪騩 |
||
268 | NAME EQU INITVAR ; |
||
269 | ENDM |
||
270 | |||
961 | savelij | 271 | ; ७ ⪨ 㪠 |
736 | savelij | 272 | SUBVAR MACRO SIZE |
1186 | savelij | 273 | INITVAR := INITVAR - SIZE |
736 | savelij | 274 | ENDM |
275 | |||
961 | savelij | 276 | ; ७ ⪨ । 㪠 |
736 | savelij | 277 | ADDVAR MACRO SIZE |
1186 | savelij | 278 | INITVAR := INITVAR + SIZE |
736 | savelij | 279 | ENDM |
280 | |||
961 | savelij | 281 | ; 樠 ६ १ࢨ 㪠 |
282 | ; 0 ⢨ ண ࠬ |
||
736 | savelij | 283 | INIT_VAR MACRO START |
999 | savelij | 284 | IFNB START |
736 | savelij | 285 | INITVAR := START |
999 | savelij | 286 | ELSE |
736 | savelij | 287 | INITVAR := 0 |
999 | savelij | 288 | ENDIF |
736 | savelij | 289 | ENDM |
781 | savelij | 290 | |
961 | savelij | 291 | ; ࠢ 樨 ⮪ ࠭ 256 |
952 | savelij | 292 | SETVAR_ALIGN MACRO |
293 | INITVAR := INITVAR + 0x100 - (INITVAR & 0xFF) |
||
294 | ENDM |
||
781 | savelij | 295 | |
961 | savelij | 296 | ; ࠢ ⥪饣 ࠭ 256 |
952 | savelij | 297 | ALIGN MACRO BYTES,FILL |
298 | IFNB |
||
299 | DB BYTES - ($ & (BYTES - 1)) DUP (0) |
||
300 | ELSE |
||
301 | DB BYTES - ($ & (BYTES - 1)) DUP (FILL) |
||
302 | ENDIF |
||
303 | ENDM |
||
304 | |||
806 | savelij | 305 | MALIGN MACRO |
306 | IF LOW($) = 0 |
||
307 | DUPL (HIGH($) << 8) - $,0 |
||
308 | ELSE |
||
309 | DUPL ((HIGH($) + 1) << 8) - $,0 |
||
310 | ENDIF |
||
311 | ENDM |
||
841 | savelij | 312 | |
313 | ; ࠢ ᥪ ⮬ 樨 |
||
314 | DALIGN MACRO ADDRESS |
||
1120 | savelij | 315 | IF LOW (ADDRESS) |
316 | DB LOW (LOW (-$)+LOW(ADDRESS)) DUP(0) |
||
841 | savelij | 317 | ELSE |
318 | DB LOW (-$) DUP (0) |
||
319 | ENDIF |
||
320 | ENDM |
||
321 | |||
322 | ; ८ࠧ 16 ⭮ ⥪ |
||
323 | WORD2TXT MACRO WORD |
||
324 | $$DEC1 := (WORD)/10000 |
||
325 | $$TMP := WORD-$$DEC1*10000 |
||
326 | $$DEC2 := $$TMP/1000 |
||
327 | $$TMP := $$TMP-$$DEC2*1000 |
||
328 | $$DEC3 := $$TMP/100 |
||
329 | $$TMP := $$TMP-$$DEC3*100 |
||
330 | $$DEC4 := $$TMP/10 |
||
331 | $$TMP := $$TMP-$$DEC4*10 |
||
332 | $$DEC5 := $$TMP |
||
333 | DB $$DEC1+'0',$$DEC2+'0',$$DEC3+'0',$$DEC4+'0',$$DEC5+'0' |
||
334 | ENDM |
||
1026 | savelij | 335 | |
336 | WINHDR MACRO X,Y,V,H,CWIN,CCUR,FLAGS,NUMPKT,TEKPKT,NUMKOL, \ |
||
337 | ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY |
||
338 | DB X,Y,V,H,CWIN,CCUR,FLAGS,NUMPKT |
||
339 | DW TEKPKT,NUMKOL,ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY |
||
340 | ENDM |
||
1120 | savelij | 341 | |
1186 | savelij | 342 | ; ⪨ १ࢨ ࠧ ( ) |
1120 | savelij | 343 | _SETVAR MACRO NAME, SIZE |
344 | NAME EQU .CURRVAR ; |
||
345 | IFNB SIZE |
||
346 | .CURRVAR := .CURRVAR + SIZE |
||
1186 | savelij | 347 | NAME_Size EQU SIZE ; ࠧ |
1120 | savelij | 348 | ELSE |
349 | .CURRVAR := .CURRVAR + BYTE |
||
1186 | savelij | 350 | NAME_Size EQU BYTE |
1120 | savelij | 351 | ENDIF |
1186 | savelij | 352 | NAME_CurAdr EQU $ ; ⥪騩 |
1120 | savelij | 353 | ENDM |
354 | |||
355 | ; ७ ⪨ 㪠 |
||
356 | _SUBVAR MACRO SIZE |
||
357 | .CURRVAR := .CURRVAR - SIZE |
||
358 | ENDM |
||
359 | |||
360 | ; ७ ⪨ । 㪠 |
||
361 | _ADDVAR MACRO SIZE |
||
362 | .CURRVAR := .CURRVAR + SIZE |
||
363 | ENDM |
||
364 | |||
1186 | savelij | 365 | ; ⪨ १ࢨ ࠧ ( ) |
366 | _MINUSVAR MACRO NAME, SIZE |
||
367 | IFNB SIZE |
||
368 | .CURRVAR := .CURRVAR - SIZE |
||
369 | NAME_Size EQU SIZE ; ࠧ |
||
370 | ELSE |
||
371 | .CURRVAR := .CURRVAR - BYTE |
||
372 | NAME_Size EQU BYTE |
||
373 | ENDIF |
||
374 | NAME_CurAdr EQU $ ; ⥪騩 |
||
375 | NAME EQU .CURRVAR ; |
||
376 | ENDM |
||
377 | |||
378 | |||
1120 | savelij | 379 | ; 樠 ६ १ࢨ 㪠 |
380 | ; 0 ⢨ ண ࠬ |
||
381 | _INIT_VAR MACRO START |
||
382 | IFNB START |
||
383 | .CURRVAR := START |
||
384 | ELSE |
||
385 | .CURRVAR := 0 |
||
386 | ENDIF |
||
387 | ENDM |
||
388 | |||
389 | ; ࠢ 樨 ⮪ ࠭ 256 |
||
390 | _SETVAR_ALIGN MACRO |
||
391 | .CURRVAR := .CURRVAR + 0x100 - (.CURRVAR & 0xFF) |
||
392 | ENDM |