Subversion Repositories ngs

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 16.04.2014 savelij
  3.  
  4.                 RELAXED ON
  5.                 CPU Z80UNDOC
  6.  
  7. BUILD_DEBUG     EQU 1
  8.  
  9. DZ              MACRO DEFZ
  10.                 DB DEFZ,0
  11.                 ENDM
  12.  
  13. DC              MACRO DEFC
  14.                 IF STRLEN(DEFC)>1
  15.                 DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
  16.                 ENDIF
  17.                 IF STRLEN(DEFC)>0
  18.                 DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
  19.                 ENDIF
  20.                 ENDM
  21.  
  22. SUM_HOB         MACRO STR,AA,BB,CC
  23.                 DB STR
  24.                 DW AA
  25.                 DW BB
  26.                 DB 0
  27.                 DB CC
  28. $$I := 0
  29. $$S := 0
  30.                 REPT 9
  31. $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
  32. $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
  33. $$S := $$S+1
  34.                 ENDM
  35. $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
  36. $$S := $$S+1
  37. $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
  38. $$S := $$S+1
  39. $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
  40. $$S := $$S+1
  41. $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
  42. $$S := $$S+1
  43. $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
  44. $$S := $$S+1
  45. $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
  46. $$S := $$S+1
  47.                 DW $$I
  48.                 ENDM
  49.  
  50. DUPL            MACRO LEN,FILL
  51. DUPL:
  52. $$N             EQU (LEN) / 1024
  53. $$M             EQU (LEN) # 1024
  54.                 REPT $$N
  55.                 DB 1024 DUP(FILL)
  56.                 ENDM
  57.                 IF $$M <> 0
  58.                 DB $$M DUP(FILL)
  59.                 ENDIF
  60.                 ENDM
  61.  
  62. HIGH            FUNCTION X,((X >> 8) & 0XFF)
  63. LOW             FUNCTION X,(X & 0XFF)
  64.  
  65. PCALL           MACRO ADR,PAGE
  66.                 RST 0X30
  67.                 DW ADR
  68.                 DB PAGE
  69.                 ENDM
  70.  
  71. ATMPORT         MACRO PORT,BYTE
  72.                 LD BC,PORT
  73.                 LD A,BYTE
  74.                 OUT (C),A
  75.                 ENDM
  76.  
  77. EVOPORT         MACRO PORT,BYTE
  78.                 LD BC,PORT
  79.                 LD A,BYTE
  80.                 OUT (C),A
  81.                 ENDM
  82.  
  83. PEC_ON          MACRO BYTE
  84.                 IN A,(PEVO_CONF)
  85.                 OR BYTE
  86.                 OUT (PEVO_CONF),A
  87.                 ENDM
  88.  
  89. PEC_OFF         MACRO BYTE
  90.                 IN A,(PEVO_CONF)
  91.                 AND BYTE!0XFF
  92.                 OUT (PEVO_CONF),A
  93.                 ENDM
  94.  
  95. SIZEDATE        EQU STRLEN (DATE)
  96.  
  97.                 IF SIZEDATE=10
  98. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)*10+(CHARFROMSTR (DATE,1)-0X30)
  99. DDATE           EQU (CHARFROMSTR (DATE,3)-0X30)*10+(CHARFROMSTR (DATE,4)-0X30)
  100. YYEAR           EQU (CHARFROMSTR (DATE,8)-0X30)*10+(CHARFROMSTR (DATE,9)-0X30)
  101.                 ELSEIF SIZEDATE=8
  102. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)
  103. DDATE           EQU (CHARFROMSTR (DATE,2)-0X30)
  104. YYEAR           EQU (CHARFROMSTR (DATE,6)-0X30)*10+(CHARFROMSTR (DATE,7)-0X30)
  105.                 ELSEIF (CHARFROMSTR (DATE,1))=0X2F
  106. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)
  107. DDATE           EQU (CHARFROMSTR (DATE,2)-0X30)*10+(CHARFROMSTR (DATE,3)-0X30)
  108. YYEAR           EQU (CHARFROMSTR (DATE,7)-0X30)*10+(CHARFROMSTR (DATE,8)-0X30)
  109.                 ELSE
  110. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)*10+(CHARFROMSTR (DATE,1)-0X30)
  111. DDATE           EQU (CHARFROMSTR (DATE,3)-0X30)
  112. YYEAR           EQU (CHARFROMSTR (DATE,7)-0X30)*10+(CHARFROMSTR (DATE,8)-0X30)
  113.                 ENDIF
  114. DATA_VERS       EQU DDATE+(MMOUNTH<<5)+(YYEAR<<9)+0X8000                        ;УЖЕ УПАКОВАНО
  115.  
  116. TEXTDATE        MACRO
  117.                 IF DDATE<10
  118. TDATE           DB DDATE+0X30
  119.                 ELSE
  120. TDATE           DB ((DDATE/10)+0X30),(DDATE#10)+0X30
  121.                 ENDIF
  122.                 DB "."
  123.                 IF MMOUNTH<10
  124. TMOUNTH         DB MMOUNTH+0X30
  125.                 ELSE
  126. TMOUNTH         DB MMOUNTH/10+0X30,MMOUNTH#10+0X30
  127.                 ENDIF
  128.                 DB ".",CHARFROMSTR (DATE,SIZEDATE-4),CHARFROMSTR (DATE,SIZEDATE-3)
  129.                 DB CHARFROMSTR (DATE,SIZEDATE-2),CHARFROMSTR (DATE,SIZEDATE-1)
  130.                 ENDM
  131.