Subversion Repositories pentevo

Rev

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