Subversion Repositories pentevo

Rev

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

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