Top secrets sources NedoPC pentevo

Rev

Rev 803 | Rev 836 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 02.02.2019 savelij

; ¢â®®¯à¥¤¥«¥­¨¥ ª®¤¨à®¢ª¨ à ¡®â ¥â ­¥¯à ¢¨«ì­®

                RELAXED ON
                CPU Z80UNDOC

BUILD_DEBUG     EQU 0

DZ              MACRO DEFZ
                DB DEFZ,0
                ENDM

DC              MACRO DEFC
                IF STRLEN(DEFC)>1
                DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
                ENDIF
                IF STRLEN(DEFC)>0
                DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
                ENDIF
                ENDM

SUM_HOB         MACRO STR,AA,BB,CC
                DB STR
                DW AA
                DW BB
                DB 0
                DB CC
$$I := 0
$$S := 0
                REPT 9
$$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
$$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
$$S := $$S+1
                ENDM
$$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
$$S := $$S+1
$$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
$$S := $$S+1
$$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
$$S := $$S+1
$$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
$$S := $$S+1
$$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
$$S := $$S+1
$$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
$$S := $$S+1
                DW $$I
                ENDM

DUPL            MACRO LEN,FILL
DUPL:
$$N             EQU (LEN) / 1024
$$M             EQU (LEN) # 1024
                REPT $$N
                DB 1024 DUP(FILL)
                ENDM
                IF $$M <> 0
                IFB FILL
                DB $$M DUP(0)
                ELSE
                DB $$M DUP(FILL)
                ENDIF
                ENDIF
                ENDM

HIGH            FUNCTION X,((X >> 8) & 0XFF)
LOW             FUNCTION X,(X & 0XFF)

PCALL           MACRO ADR,PAGE
                RST 0X30
                DW ADR
                DB PAGE
                ENDM

ATMPORT         MACRO PORT,BYTE
                LD BC,PORT
                LD A,BYTE
                OUT (C),A
                ENDM

EVOPORT         MACRO PORT,BYTE
                LD BC,PORT
                LD A,BYTE
                OUT (C),A
                ENDM

PEC_ON          MACRO BYTE
                IN A,(PEVO_CONF)
                OR BYTE
                OUT (PEVO_CONF),A
                ENDM

PEC_OFF         MACRO BYTE
                IN A,(PEVO_CONF)
                AND BYTE!0XFF
                OUT (PEVO_CONF),A
                ENDM

READ_7FFD       MACRO
                LD A,HIGH (RD_7FFD)
                IN A,(LOW (RD_7FFD))
                ENDM

SIZEDATE        EQU STRLEN (DATE)
SIZETIME        EQU STRLEN (TIME)

                IF SIZEDATE=10
MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')*10+(CHARFROMSTR (DATE,1)-'0')
DDATE           EQU (CHARFROMSTR (DATE,3)-'0')*10+(CHARFROMSTR (DATE,4)-'0')
YYEAR           EQU (CHARFROMSTR (DATE,8)-'0')*10+(CHARFROMSTR (DATE,9)-'0')
                ELSEIF SIZEDATE=8
MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')
DDATE           EQU (CHARFROMSTR (DATE,2)-'0')
YYEAR           EQU (CHARFROMSTR (DATE,6)-'0')*10+(CHARFROMSTR (DATE,7)-'0')
                ELSEIF (CHARFROMSTR (DATE,1))=0X2F
MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')
DDATE           EQU (CHARFROMSTR (DATE,2)-'0')*10+(CHARFROMSTR (DATE,3)-'0')
YYEAR           EQU (CHARFROMSTR (DATE,7)-'0')*10+(CHARFROMSTR (DATE,8)-'0')
                ELSE
MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')*10+(CHARFROMSTR (DATE,1)-'0')
DDATE           EQU (CHARFROMSTR (DATE,3)-'0')
YYEAR           EQU (CHARFROMSTR (DATE,7)-'0')*10+(CHARFROMSTR (DATE,8)-'0')
                ENDIF

                IF SIZETIME=7
HHOUR           EQU (CHARFROMSTR (TIME,0)-'0')
MMINUTE         EQU (CHARFROMSTR (TIME,2)-'0')*10+(CHARFROMSTR (TIME,3)-'0')
SSECUND         EQU (CHARFROMSTR (TIME,5)-'0')*10+(CHARFROMSTR (TIME,6)-'0')
                ELSE
HHOUR           EQU (CHARFROMSTR (TIME,0)-'0')*10+(CHARFROMSTR (TIME,1)-'0')
MMINUTE         EQU (CHARFROMSTR (TIME,3)-'0')*10+(CHARFROMSTR (TIME,4)-'0')
SSECUND         EQU (CHARFROMSTR (TIME,6)-'0')*10+(CHARFROMSTR (TIME,7)-'0')
                ENDIF

DATA_VERS       EQU DDATE+(MMOUNTH<<5)+(YYEAR<<9)+0X8000                        ;㦥 㯠ª®¢ ­®

FAT_DATE        EQU DDATE+(MMOUNTH<<5)+((2000+YYEAR-1980)&0x7F)<<9
FAT_TIME        EQU SSECUND/2+(MMINUTE<<5)+(HHOUR<<11)

TEXTDATE        MACRO
TDATE           DB ((DDATE/10)+'0'),(DDATE#10)+'0'
                DB "."
TMOUNTH         DB MMOUNTH/10+'0',MMOUNTH#10+'0'
                DB ".",CHARFROMSTR (DATE,SIZEDATE-4),CHARFROMSTR (DATE,SIZEDATE-3)
                DB CHARFROMSTR (DATE,SIZEDATE-2),CHARFROMSTR (DATE,SIZEDATE-1)
                ENDM

RST8            MACRO N1,N2,N3
                RST 8
                DB N1
                IFNB N2
                DB N2
                ENDIF
                IFNB N3
                DB N3
                ENDIF
                ENDM

BYTE            EQU 1
WORD            EQU 2
JUMP            EQU 3
DWORD           EQU 4
QWORD           EQU 8

BITMASK         MACRO NAME,NUM
B_NAME          EQU NUM
M_NAME          EQU 1<<NUM
                ENDM

SETVAR          MACRO NAME,SIZE
NAME            EQU INITVAR
                IFNB SIZE
INITVAR := INITVAR+SIZE
NAME_Size       EQU SIZE
                ELSE
INITVAR := INITVAR+BYTE
NAME_Size       EQU BYTE
                ENDIF
                ENDM

SUBVAR          MACRO SIZE
INITVAR := INITVAR-SIZE
                ENDM

ADDVAR          MACRO SIZE
INITVAR := INITVAR+SIZE
                ENDM

INIT_VAR        MACRO START
                IFNB START
INITVAR := START
                ELSE
INITVAR := 0
                ENDIF
                ENDM

;¨­¨æ¨ «¨§ æ¨ï ¯¥à¥¬¥­­®© ¤«ï £¥­¥à æ¨¨ â ¡«¨æë ᬥ饭¨©
INIT_GETADR     MACRO NAME
NAME_DIGIT := 0
        IF MOMPASS = 1
NAME_DIGITMAX := NAME_DIGIT
        ENDIF
                ENDM

;£¥­¥à æ¨ï ¨¬¥­¨ ¯¥à¥¬¥­­®© ¤«ï â ¡«¨æë ᬥ饭¨©
GETADR          MACRO NAME
dIgIt1 := CHARFROMSTR("\{NAME_DIGIT >> 12}",0)
dIgIt2 := CHARFROMSTR("\{NAME_DIGIT >> 8}",0)
dIgIt3 := CHARFROMSTR("\{NAME_DIGIT >> 4}",0)
dIgIt4 := CHARFROMSTR("\{NAME_DIGIT & 0X0F}",0)
dIgIt0 := "\{dIgIt1}\{dIgIt2}\{dIgIt3}\{dIgIt4}"
NAME_{dIgIt0}   EQU $-2
NAME_DIGIT := NAME_DIGIT+1
        IF NAME_DIGITMAX < NAME_DIGIT
NAME_DIGITMAX := NAME_DIGITMAX + 1
        ENDIF
                ENDM

;£¥­¥à æ¨ï â ¡«¨æë ᬥ饭¨©
PUTADR          MACRO NAME
NAME_TMPDIGIT := 0
                REPT NAME_DIGITMAX
dIgIt1 := CHARFROMSTR("\{NAME_TMPDIGIT >> 12}",0)
dIgIt2 := CHARFROMSTR("\{NAME_TMPDIGIT >> 8}",0)
dIgIt3 := CHARFROMSTR("\{NAME_TMPDIGIT >> 4}",0)
dIgIt4 := CHARFROMSTR("\{NAME_TMPDIGIT & 0X0F}",0)
dIgIt0 := "\{dIgIt1}\{dIgIt2}\{dIgIt3}\{dIgIt4}"
                DW NAME_{dIgIt0}
NAME_TMPDIGIT := NAME_TMPDIGIT+1
                ENDM
                ENDM

MALIGN          MACRO
        IF LOW($) = 0
                DUPL (HIGH($) << 8) - $,0
        ELSE
                DUPL ((HIGH($) + 1) << 8) - $,0
        ENDIF
                ENDM