;------------------------------------------------06-04-89---------- 
;  ПРОЦЕДУРА ОСУЩЕСТВЛЯЕТ ЧТЕНИЕ ФАЙЛА С КАССЕТЫ 
;------------------------------------------------------------------ 
; 
;     1.3. Заголовок файла 
;     Заголовок  файла  на магнитной ленте имеет следующий формат 
;(смещения даются в байтах в  шестнадцатеричной  системе  счисле- 
;ния): 
; 0   Содержит значение 0A5h, признак заголовка файла. 
; 
;1-8  Имя файла. Длина имени файла от 1 до 8 символов. Кроме сим- 
;     волов, перечисленных в описании языка как допустимые в име- 
;     ни файла символы, кассетный Бейсик в имени файла  допускает 
;     также и русские буквы. 
; 
; 9   Тип файла.  Определяет тип содержащейся в файле информации, 
;     способ ее представления в файле, команду, с помощью которых 
;     информация была записана в файл. Тип файла кодируется  сле- 
;     дующими значениями: 
; 
;     00 - файл, содержащий Бейсик-программу в символьном  форма- 
;          те,  записанный на магнитную ленту с помощью оператора 
;          SAVE, описанного в подпункте 3.51  данного  документа, 
;          или  файл  данных,  записанный Бейсик-программой с по- 
;          мощью операторов PRINT# и WRITE#, описанных в подпунк- 
;          тах 3.43 и 3.59 данного документа. Из Бэйсик-программы 
;          такой файл открывается и закрывается с помощью  опера- 
;          торов  OPEN и CLOSE, описанных в подпунктах 3.37 и 3.4 
;          данного документа. В случае  использования  кассетного 
;          Бейсика  оператор  OPEN (см.п.3.37) записывает на маг- 
;          нитную ленту заголовок файла. Функция оператора  CLOSE 
;          (см.п.3.4)  заключается в дописывании в файл полностью 
;          незаполненного буфера файла после завершения  операций 
;          записи  в  файл.  Операторы PRINT# (см.п.3.43), WRITE# 
;          (см.п.3.59) непосредственно записывают выводимые  дан- 
;          ные в 256-байтный буфер файла. Когда этот буфер запол- 
;          няется полностью, он целиком переписывается на магнит- 
;          ную ленту и освобождается для приема новых данных. 
;     01  - файл с содержимым области оперативной памяти; записы- 
;          вается с помощью оператора BSAVE (см.п.3.51). 
;     40 - файл, содержащий Бейсик-программу в символьном  форма- 
;          те. Записывается на магнитную ленту с помощью операто- 
;          ров SAVE (см.п.3.51) с опцией А и директивы LIST, опи- 
;          саной в подпунктах 3.27, 5.7. 
;     80  -  файл,  содержащий Бейсик-программу в сжатом формате. 
;          Записывается на магнитную ленту  с  помощью  оператора 
;          SAVE (см.п.3.51) без опции. 
;     A0 - файл, содержащий Бейсик-программу в защищенном формате. 
;          Записывается на магнитную ленту с помощью операторов 
;          SAVE (см.п.3.51) с опцией P. 
; 
;A-B  Длина  записанной  в файл информации. 
;C-D  Значение сегмента адреса в  оперативной  памяти  информации, 
;     которая была переписана в файл. 
;E-F  Значение  смещения  адреса в оперативной памяти информации, 
;     которая была переписана в файл. 
;10   Содержит значение 00, признак конца заголовка файла. 
; 
;     Примечание. Длина записанной в  файл  информации,  значения 
;сегмента  и  смещения адреса (поля заголовка A-F) запоминаются в 
;заголовке только для файлов типов 01, 80 и А0. 
 
 
FILE_READ  PROC    NEAR 
rc2: 
          MOV     BP,SP 
          MOV     AX,SS:[BP+2] 
          MOV     DS,AX          ;(DS:BX) - ИМЯ ФАЙЛА 
          PUSH    BX 
RC3:      mov     bx,0 
          mov     cx,12 
          mov     ah,2 
          int     15h        ;загрузка заголовка 
          JC      FREND      ;БЫЛА ОШИБКА 
          mov     di,0       ;СРАВНЕНИЕ ЗАГОЛОВКА 
          cmp     byte ptr es:[di],0a5h 
          jnz     rc3 
          INC     DI 
          POP     BX 
          mov     si,0 
rc6:      mov     al,byte ptr es:[di] 
          CMP     DS:[BX+SI],AL 
          jnz     rc2         ;заголовок не совпал 
          inc     di 
          inc     si 
          cmp     si,8 
          jnz     rc6 
          LEA	  si,fn       ;"ФАЙЛ НАЙДЕН" 
	  mov	  cx,LFN 
	  call	  P_MSG 
          mov     di,10 
          mov     cx,es:[di] 
          mov     bx,0 
          mov     ah,2 
          int     15h         ;загрузить файл 
	  ret 
FREND: 
	  pop     bx 
          RET 
FILE_READ  ENDP 
 
;----------------------------------------------06-04-89------------ 
;   ПРОЦЕДУРА ОСУЩЕСТВЛЯЕТ ЗАПИСЬ ФАЙЛА НА КАССЕТУ 
;------------------------------------------------------------------ 
 
FILE_WRITE   PROC     NEAR 
 
          MOV     BP,SP 
          MOV     AX,SS:[BP+2] 
          MOV     DS,AX          ;(DS:BX) - ИМЯ ФАЙЛА 
       PUSH  ES 
       PUSH  DS 
       POP   ES 
       MOV   CX,17 
       MOV   AH,3 
       push  bx 
       INT   15H 
       pop   bx 
       MOV   CX,DS:[BX+10] 
       MOV   BX,0 
       POP   ES 
       MOV   AH,3 
       INT   15H 
       PUSH  DS 
       RET 
 
FILE_WRITE   ENDP 
 
