Subversion Repositories pentevo

Rev

Rev 761 | Rev 781 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 30.09.2017 savelij
  3.  
  4. ;автоопределение кодировки работает неправильно
  5.  
  6.                 RELAXED ON
  7.                 CPU Z80UNDOC
  8.  
  9. BUILD_DEBUG     EQU 0
  10.  
  11. DZ              MACRO DEFZ
  12.                 DB DEFZ,0
  13.                 ENDM
  14.  
  15. DC              MACRO DEFC
  16.                 IF STRLEN(DEFC)>1
  17.                 DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
  18.                 ENDIF
  19.                 IF STRLEN(DEFC)>0
  20.                 DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
  21.                 ENDIF
  22.                 ENDM
  23.  
  24. SUM_HOB         MACRO STR,AA,BB,CC
  25.                 DB STR
  26.                 DW AA
  27.                 DW BB
  28.                 DB 0
  29.                 DB CC
  30. $$I := 0
  31. $$S := 0
  32.                 REPT 9
  33. $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
  34. $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
  35. $$S := $$S+1
  36.                 ENDM
  37. $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
  38. $$S := $$S+1
  39. $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
  40. $$S := $$S+1
  41. $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
  42. $$S := $$S+1
  43. $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
  44. $$S := $$S+1
  45. $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
  46. $$S := $$S+1
  47. $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
  48. $$S := $$S+1
  49.                 DW $$I
  50.                 ENDM
  51.  
  52. DUPL            MACRO LEN,FILL
  53. DUPL:
  54. $$N             EQU (LEN) / 1024
  55. $$M             EQU (LEN) # 1024
  56.                 REPT $$N
  57.                 DB 1024 DUP(FILL)
  58.                 ENDM
  59.                 IF $$M <> 0
  60.                 IFB FILL
  61.                 DB $$M DUP(0)
  62.                 ELSE
  63.                 DB $$M DUP(FILL)
  64.                 ENDIF
  65.                 ENDIF
  66.                 ENDM
  67.  
  68. HIGH            FUNCTION X,((X >> 8) & 0XFF)
  69. LOW             FUNCTION X,(X & 0XFF)
  70.  
  71. PCALL           MACRO ADR,PAGE
  72.                 RST 0X30
  73.                 DW ADR
  74.                 DB PAGE
  75.                 ENDM
  76.  
  77. ATMPORT         MACRO PORT,BYTE
  78.                 LD BC,PORT
  79.                 LD A,BYTE
  80.                 OUT (C),A
  81.                 ENDM
  82.  
  83. EVOPORT         MACRO PORT,BYTE
  84.                 LD BC,PORT
  85.                 LD A,BYTE
  86.                 OUT (C),A
  87.                 ENDM
  88.  
  89. PEC_ON          MACRO BYTE
  90.                 IN A,(PEVO_CONF)
  91.                 OR BYTE
  92.                 OUT (PEVO_CONF),A
  93.                 ENDM
  94.  
  95. PEC_OFF         MACRO BYTE
  96.                 IN A,(PEVO_CONF)
  97.                 AND BYTE!0XFF
  98.                 OUT (PEVO_CONF),A
  99.                 ENDM
  100.  
  101. READ_7FFD       MACRO
  102.                 LD A,HIGH (RD_7FFD)
  103.                 IN A,(LOW (RD_7FFD))
  104.                 ENDM
  105.  
  106. SIZEDATE        EQU STRLEN (DATE)
  107.  
  108.                 IF SIZEDATE=10
  109. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')*10+(CHARFROMSTR (DATE,1)-'0')
  110. DDATE           EQU (CHARFROMSTR (DATE,3)-'0')*10+(CHARFROMSTR (DATE,4)-'0')
  111. YYEAR           EQU (CHARFROMSTR (DATE,8)-'0')*10+(CHARFROMSTR (DATE,9)-'0')
  112.                 ELSEIF SIZEDATE=8
  113. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')
  114. DDATE           EQU (CHARFROMSTR (DATE,2)-'0')
  115. YYEAR           EQU (CHARFROMSTR (DATE,6)-'0')*10+(CHARFROMSTR (DATE,7)-'0')
  116.                 ELSEIF (CHARFROMSTR (DATE,1))=0X2F
  117. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')
  118. DDATE           EQU (CHARFROMSTR (DATE,2)-'0')*10+(CHARFROMSTR (DATE,3)-'0')
  119. YYEAR           EQU (CHARFROMSTR (DATE,7)-'0')*10+(CHARFROMSTR (DATE,8)-'0')
  120.                 ELSE
  121. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-'0')*10+(CHARFROMSTR (DATE,1)-'0')
  122. DDATE           EQU (CHARFROMSTR (DATE,3)-'0')
  123. YYEAR           EQU (CHARFROMSTR (DATE,7)-'0')*10+(CHARFROMSTR (DATE,8)-'0')
  124.                 ENDIF
  125. DATA_VERS       EQU DDATE+(MMOUNTH<<5)+(YYEAR<<9)+0X8000                        ;уже упаковано
  126.  
  127. TEXTDATE        MACRO
  128. ;               IF DDATE<10
  129. ;TDATE          DB DDATE+'0'
  130. ;               ELSE
  131. TDATE           DB ((DDATE/10)+'0'),(DDATE#10)+'0'
  132. ;               ENDIF
  133.                 DB "."
  134. ;               IF MMOUNTH<10
  135. ;TMOUNTH                DB MMOUNTH+0X30
  136. ;               ELSE
  137. TMOUNTH         DB MMOUNTH/10+'0',MMOUNTH#10+'0'
  138. ;               ENDIF
  139.                 DB ".",CHARFROMSTR (DATE,SIZEDATE-4),CHARFROMSTR (DATE,SIZEDATE-3)
  140.                 DB CHARFROMSTR (DATE,SIZEDATE-2),CHARFROMSTR (DATE,SIZEDATE-1)
  141.                 ENDM
  142.  
  143. RST8            MACRO N1,N2,N3
  144.                 RST 8
  145.                 DB N1
  146.                 IFNB N2
  147.                 DB N2
  148.                 ENDIF
  149.                 IFNB N3
  150.                 DB N3
  151.                 ENDIF
  152.                 ENDM
  153.  
  154. BYTE            EQU 1
  155. WORD            EQU 2
  156. JUMP            EQU 3
  157. DWORD           EQU 4
  158. QWORD           EQU 8
  159.  
  160. BITMASK         MACRO NAME,NUM
  161. B_NAME          EQU NUM
  162. M_NAME          EQU 1<<NUM
  163.                 ENDM
  164.  
  165. SETVAR          MACRO NAME,SIZE
  166. NAME            EQU INITVAR
  167.                 IFNB SIZE
  168. INITVAR := INITVAR+SIZE
  169. NAME_Size       EQU SIZE
  170.                 ELSE
  171. INITVAR := INITVAR+BYTE
  172. NAME_Size       EQU BYTE
  173.                 ENDIF
  174.                 ENDM
  175.  
  176. SUBVAR          MACRO SIZE
  177. INITVAR := INITVAR-SIZE
  178.                 ENDM
  179.  
  180. ADDVAR          MACRO SIZE
  181. INITVAR := INITVAR+SIZE
  182.                 ENDM
  183.  
  184. INIT_VAR        MACRO START
  185.                 IFNB START
  186. INITVAR := START
  187.                 ELSE
  188. INITVAR := 0
  189.                 ENDIF
  190.                 ENDM
  191.