Rev 1186 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 244 | savelij | 1 | |
| 1285 | savelij | 2 | ; LAST UPDATE: 02.06.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 |