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 |