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 |