Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 12.09.2019 savelij
  3.  
  4. ; генерация SCL образа
  5.  
  6. ; инициализация переменной для счетчика количествыа файлов
  7. SCL_INIT_VAR    MACRO
  8. SCL_NUMBERS_FILES := 0
  9.                 ENDM
  10.  
  11. ; получение счетчика количества файлов в SCL образе
  12. SCL_GET_NUMBERS MACRO NAME
  13. NAME := SCL_NUMBERS_FILES
  14.                 ENDM
  15.  
  16. ; добавление записи в SCL заголовок
  17. ; INC           переменная количества файлов в SCL файле
  18. ; SECTORS       количество секторов добавляемого файла,
  19. ;               если 0 то размер вычисляется из BYTES
  20. ; TEXT          имя файла как в TR-DOS
  21. ;               если "filenameB" адрес берется из ADRES
  22. ;               иначе "filenameEXT" и ADRES не вставляется
  23. ; BYTES         размер файла в байтах
  24. ; ADRES         адрес загрузки
  25. SCL_RECORD      MACRO INC,SECTORS,TEXT,BYTES,ADRES
  26.         IF MOMPASS > 1
  27.                 IF LOW (BYTES)
  28. $$TMP := (BYTES>>8)+1
  29.                 ELSE
  30. $$TMP := (BYTES>>8)
  31.                 ENDIF
  32.  
  33.                 IF STRLEN(TEXT) = 9
  34.                         DB TEXT
  35.                         DW ADRES
  36.                 ELSE
  37.                         DB TEXT
  38.                 ENDIF
  39.                         DW BYTES
  40.                 IF SECTORS
  41.                         DB SECTORS+$$TMP
  42.                 ELSE
  43.                         IF LOW(BYTES)
  44.                                 DB ((BYTES)>>8)+1
  45.                         ELSE
  46.                                 DB ((BYTES)>>8)
  47.                         ENDIF
  48.                 ENDIF
  49. INC := INC+1
  50.         ENDIF
  51.                 ENDM
  52.  
  53. ; создание маркера SCL файла и количества файлов
  54. SCL_HEADER      MACRO NUMS
  55.                 DB "SINCLAIR"
  56.         IF MOMPASS > 1
  57.                 DB NUMS
  58.         ELSE
  59.                 DB 0
  60.         ENDIF
  61.                 ENDM
  62.  
  63. ; установка ORG для SCL файла
  64. SCL_ORG         MACRO ADDRS,NUMS
  65.         IF MOMPASS > 1
  66.                 ORG ADDRS-NUMS
  67.         ELSE
  68.                 ORG ADDRS
  69.         ENDIF
  70.                 ENDM
  71.  
  72. ; вычисление размера каталога SCL файла без маркера и количества файлов
  73. SCL_HEADER_SIZE MACRO INNUMS,OUTNUMS
  74. OUTNUMS := (9+INNUMS*14+0x100)
  75.                 ENDM
  76.  
  77. ; вычисление количества секторов BASIC блока для SCL файла
  78. SCL_BASIC_SIZE  MACRO START,END,VARS
  79.                 IF LOW(END-START)
  80. VARS := ((END-START)>>8)+1
  81.                 ELSE
  82. VARS := ((END-START)>>8)
  83.                 ENDIF
  84.                 ENDM
  85.