Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 22.11.2014 savelij
  3.  
  4. ;АВТООПРЕДЕЛЕНИЕ КОДИРОВКИ РАБОТАЕТ НЕПРАВИЛЬНО
  5.  
  6.                 RELAXED ON
  7.                 CPU Z80UNDOC
  8.  
  9. BUILD_DEBUG     EQU 0
  10. TMP_FITCHA      EQU 0
  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.                 DB $$M DUP(FILL)
  62.                 ENDIF
  63.                 ENDM
  64.  
  65. HIGH            FUNCTION X,((X >> 8) & 0XFF)
  66. LOW             FUNCTION X,(X & 0XFF)
  67.  
  68. PCALL           MACRO ADR,PAGE
  69.                 RST 0X30
  70.                 DW ADR
  71.                 DB PAGE
  72.                 ENDM
  73.  
  74. ATMPORT         MACRO PORT,BYTE
  75.                 LD BC,PORT
  76.                 LD A,BYTE
  77.                 OUT (C),A
  78.                 ENDM
  79.  
  80. EVOPORT         MACRO PORT,BYTE
  81.                 LD BC,PORT
  82.                 LD A,BYTE
  83.                 OUT (C),A
  84.                 ENDM
  85.  
  86. PEC_ON          MACRO BYTE
  87.                 IN A,(PEVO_CONF)
  88.                 OR BYTE
  89.                 OUT (PEVO_CONF),A
  90.                 ENDM
  91.  
  92. PEC_OFF         MACRO BYTE
  93.                 IN A,(PEVO_CONF)
  94.                 AND BYTE!0XFF
  95.                 OUT (PEVO_CONF),A
  96.                 ENDM
  97.  
  98. SIZEDATE        EQU STRLEN (DATE)
  99.  
  100.                 IF SIZEDATE=10
  101. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)*10+(CHARFROMSTR (DATE,1)-0X30)
  102. DDATE           EQU (CHARFROMSTR (DATE,3)-0X30)*10+(CHARFROMSTR (DATE,4)-0X30)
  103. YYEAR           EQU (CHARFROMSTR (DATE,8)-0X30)*10+(CHARFROMSTR (DATE,9)-0X30)
  104.                 ELSEIF SIZEDATE=8
  105. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)
  106. DDATE           EQU (CHARFROMSTR (DATE,2)-0X30)
  107. YYEAR           EQU (CHARFROMSTR (DATE,6)-0X30)*10+(CHARFROMSTR (DATE,7)-0X30)
  108.                 ELSEIF (CHARFROMSTR (DATE,1))=0X2F
  109. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)
  110. DDATE           EQU (CHARFROMSTR (DATE,2)-0X30)*10+(CHARFROMSTR (DATE,3)-0X30)
  111. YYEAR           EQU (CHARFROMSTR (DATE,7)-0X30)*10+(CHARFROMSTR (DATE,8)-0X30)
  112.                 ELSE
  113. MMOUNTH         EQU (CHARFROMSTR (DATE,0)-0X30)*10+(CHARFROMSTR (DATE,1)-0X30)
  114. DDATE           EQU (CHARFROMSTR (DATE,3)-0X30)
  115. YYEAR           EQU (CHARFROMSTR (DATE,7)-0X30)*10+(CHARFROMSTR (DATE,8)-0X30)
  116.                 ENDIF
  117. DATA_VERS       EQU DDATE+(MMOUNTH<<5)+(YYEAR<<9)+0X8000                        ;УЖЕ УПАКОВАНО
  118.  
  119. TEXTDATE        MACRO
  120.                 IF DDATE<10
  121. TDATE           DB DDATE+0X30
  122.                 ELSE
  123. TDATE           DB ((DDATE/10)+0X30),(DDATE#10)+0X30
  124.                 ENDIF
  125.                 DB "."
  126. ;               IF MMOUNTH<10
  127. ;TMOUNTH                DB MMOUNTH+0X30
  128. ;               ELSE
  129. TMOUNTH         DB MMOUNTH/10+0X30,MMOUNTH#10+0X30
  130. ;               ENDIF
  131.                 DB ".",CHARFROMSTR (DATE,SIZEDATE-4),CHARFROMSTR (DATE,SIZEDATE-3)
  132.                 DB CHARFROMSTR (DATE,SIZEDATE-2),CHARFROMSTR (DATE,SIZEDATE-1)
  133.                 ENDM
  134.  
  135. RST8            MACRO N1,N2,N3
  136.                 RST 8
  137.                 DB N1
  138.                 IFNB N2
  139.                 DB N2
  140.                 ENDIF
  141.                 IFNB N3
  142.                 DB N3
  143.                 ENDIF
  144.                 ENDM
  145.