Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
888 savelij 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