Subversion Repositories pentevo

Rev

Rev 1120 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1120 Rev 1186
Line 1... Line 1...
1
 
1
 
2
; LAST UPDATE: 10.02.2024 savelij
2
; LAST UPDATE: 13.02.2025 savelij
3
 
3
 
4
; автоопределение кодировки работает неправильно
4
; автоопределение кодировки работает неправильно
5
 
5
 
6
                RELAXED ON
6
                RELAXED ON
7
                CPU Z80UNDOC
7
                CPU Z80UNDOC
Line 36... Line 36...
36
                DB CC
36
                DB CC
37
$$I := 0
37
$$I := 0
38
$$S := 0
38
$$S := 0
39
                REPT 9
39
                REPT 9
40
$$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
40
$$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
41
$$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
41
$$I := ($$I+$$S+$$N+($$N*256))&0xFFFF
42
$$S := $$S+1
42
$$S := $$S+1
43
                ENDM
43
                ENDM
44
$$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
44
$$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0x100))&0xFFFF
45
$$S := $$S+1
45
$$S := $$S+1
46
$$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
46
$$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0x100))&0xFFFF
47
$$S := $$S+1
47
$$S := $$S+1
48
$$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
48
$$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0x100))&0xFFFF
49
$$S := $$S+1
49
$$S := $$S+1
50
$$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
50
$$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0x100))&0xFFFF
51
$$S := $$S+1
51
$$S := $$S+1
52
$$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
52
$$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0x100))&0xFFFF
53
$$S := $$S+1
53
$$S := $$S+1
54
$$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
54
$$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0x100))&0xFFFF
55
$$S := $$S+1
55
$$S := $$S+1
56
                DW $$I
56
                DW $$I
57
                ENDM
57
                ENDM
58
 
58
 
59
; заполнение области указанным байтом или нулем при отсуствии второго параметра
59
; заполнение области указанным байтом или нулем при отсуствии второго параметра
Line 72... Line 72...
72
        ENDIF
72
        ENDIF
73
        ENDIF
73
        ENDIF
74
                ENDM
74
                ENDM
75
 
75
 
76
; старший байт слова
76
; старший байт слова
77
HIGH            FUNCTION X,((X >> 8) & 0XFF)
77
HIGH            FUNCTION X,((X >> 8) & 0xFF)
78
; младший байт слова
78
; младший байт слова
79
LOW             FUNCTION X,(X & 0XFF)
79
LOW             FUNCTION X,(X & 0xFF)
80
 
80
 
81
; вызов подпрограммы в другой странице ROM
81
; вызов подпрограммы в другой странице ROM
82
ROMCALL         MACRO ADR,PAGE
82
ROMCALL         MACRO ADR,PAGE
83
                RST 0X30
83
                RST 0x30
84
                DW ADR
84
                DW ADR
85
                DB PAGE
85
                DB PAGE
86
                ENDM
86
                ENDM
87
 
87
 
88
; вызов подпрограммы в другой странице RAM
88
; вызов подпрограммы в другой странице RAM
89
RAMCALL         MACRO ADR,PAGE
89
RAMCALL         MACRO ADR,PAGE
90
                RST 0X20
90
                RST 0x20
91
                DW ADR
91
                DW ADR
92
                DB PAGE
92
                DB PAGE
93
                ENDM
93
                ENDM
94
 
94
 
95
; запись в порт ATM Turbo 2+
95
; запись в порт ATM Turbo 2+
Line 122... Line 122...
122
                ENDM
122
                ENDM
123
 
123
 
124
; сброс бита (битов) в порту 0xBF
124
; сброс бита (битов) в порту 0xBF
125
PEC_OFF         MACRO BYTE
125
PEC_OFF         MACRO BYTE
126
                IN A,(PEVO_CONF)
126
                IN A,(PEVO_CONF)
127
                AND BYTE!0XFF
127
                AND BYTE!0xFF
128
                OUT (PEVO_CONF),A
128
                OUT (PEVO_CONF),A
129
                ENDM
129
                ENDM
130
 
130
 
131
; чтение порта 0x7FFD
131
; чтение порта 0x7FFD
132
READ_7FFD       MACRO
132
READ_7FFD       MACRO
Line 236... Line 236...
236
BITMASK         MACRO NAME,NUM
236
BITMASK         MACRO NAME,NUM
237
B_NAME          EQU NUM
237
B_NAME          EQU NUM
238
M_NAME          EQU 1<<NUM
238
M_NAME          EQU 1 << NUM
239
                ENDM
239
                ENDM
240
 
240
 
-
 
241
_BITMASK        MACRO NAME,NUM
-
 
242
.B_NAME         EQU NUM
-
 
243
.M_NAME         EQU 1 << NUM
-
 
244
                ENDM
241
; генерация метки с резервированием места и размера области
245
; генерация метки с резервированием места и размера области (вверх по памяти)
242
SETVAR          MACRO NAME,SIZE
246
SETVAR          MACRO NAME,SIZE
243
NAME            EQU INITVAR             ; номер имени
247
NAME            EQU INITVAR             ; номер имени
244
        IFNB SIZE
248
        IFNB SIZE
245
INITVAR := INITVAR+SIZE
249
INITVAR := INITVAR + SIZE
246
NAME_Size       EQU SIZE                ; размер
250
NAME_Size       EQU SIZE                ; размер
Line 249... Line 253...
249
NAME_Size       EQU BYTE
253
NAME_Size       EQU BYTE
250
        ENDIF
254
        ENDIF
251
NAME_CurAdr     EQU $                   ; текущий адрес
255
NAME_CurAdr     EQU $                   ; текущий адрес
252
                ENDM
256
                ENDM
253
 
257
 
-
 
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
 
254
; перенос метки назад на указанное число байт
271
; перенос метки назад на указанное число байт
255
SUBVAR          MACRO SIZE
272
SUBVAR          MACRO SIZE
256
INITVAR := INITVAR-SIZE
273
INITVAR := INITVAR - SIZE
257
                ENDM
274
                ENDM
258
 
275
 
Line 320... Line 337...
320
                        ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY
337
                        ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY
321
                DB X,Y,V,H,CWIN,CCUR,FLAGS,NUMPKT
338
                DB X,Y,V,H,CWIN,CCUR,FLAGS,NUMPKT
322
                DW TEKPKT,NUMKOL,ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY
339
                DW TEKPKT,NUMKOL,ADRTXT,ADRPRG,ADRMOUSE,ADRHOTKEY
323
                ENDM
340
                ENDM
324
 
341
 
325
; генерация метки с резервированием места и размера области
342
; генерация метки с резервированием места и размера области (вверх по памяти)
326
_SETVAR         MACRO NAME, SIZE
343
_SETVAR         MACRO NAME, SIZE
327
NAME            EQU .CURRVAR            ; номер имени
344
NAME            EQU .CURRVAR            ; номер имени
328
        IFNB SIZE
345
        IFNB SIZE
329
.CURRVAR := .CURRVAR + SIZE
346
.CURRVAR := .CURRVAR + SIZE
330
.NAME_Size      EQU SIZE                ; размер
347
NAME_Size       EQU SIZE                ; размер
331
        ELSE
348
        ELSE
332
.CURRVAR := .CURRVAR + BYTE
349
.CURRVAR := .CURRVAR + BYTE
333
.NAME_Size      EQU BYTE
350
NAME_Size       EQU BYTE
334
        ENDIF
351
        ENDIF
335
.NAME_CurAdr    EQU $                   ; текущий адрес
352
NAME_CurAdr     EQU $                   ; текущий адрес
336
                ENDM
353
                ENDM
337
 
354
 
338
; перенос метки назад на указанное число байт
355
; перенос метки назад на указанное число байт
339
_SUBVAR         MACRO SIZE
356
_SUBVAR         MACRO SIZE
340
.CURRVAR := .CURRVAR - SIZE
357
.CURRVAR := .CURRVAR - SIZE
Line 343... Line 360...
343
; перенос метки вперед на указанное число байт
360
; перенос метки вперед на указанное число байт
344
_ADDVAR         MACRO SIZE
361
_ADDVAR         MACRO SIZE
345
.CURRVAR := .CURRVAR + SIZE
362
.CURRVAR := .CURRVAR + SIZE
346
                ENDM
363
                ENDM
347
 
364
 
-
 
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
 
348
; инициализация переменной для резервирования указанным числом
379
; инициализация переменной для резервирования указанным числом
349
; или 0 при отсуствии второго параметра
380
; или 0 при отсуствии второго параметра
350
_INIT_VAR       MACRO START
381
_INIT_VAR       MACRO START
351
        IFNB START
382
        IFNB START
352
.CURRVAR := START
383
.CURRVAR := START