Код:
; ============================
; ****СИСТЕМНЫЕ ПЕРЕМЕННЫЕ****
; ============================
;
.ASECT
.=2000
;
STACK::
LYGIS:: .BLKW 1 ;РЕЖИМ РАБОТЫ СИСТЕМЫ
TXEND:: .BLKW 1 ;МЕТКА КОНЦА ТЕКСТА И НАЧАЛА ОБ'ЕКТНОГО КОДА
STRREG::.BLKW 1 ;МЕТКА НАЧАЛА ОБЛАСТИ СТРОК
STRSIZ::.BLKW 1 ;УКАЗАТЕЛЬ ДЛИНЫ ОБЛАСТИ СТРОК
FREBEG::.BLKW 1 ;МЕТКА СВОБОДНОЙ ЧАСТИ ОБЛАСТИ СТРОК
FRELEN::.BLKW 1 ;ТЕКУЩАЯ ДЛИНА СВОБОДНОЙ ЧАСТИ ОБЛАСТИ СТРОК
ENDCOD::.BLKW 1 ;МЕТКА НАЧАЛА СВОБОДНОЙ ОБЛАСТИ
;И КОНЦА ОБ'ЕКТНОГО КОДА
CIKL:: .BLKW 1 ;metka na~ala steka ciklow
LIMIT:: .BLKW 1 ;ukazatelx wer{iny steka podprogramm
LENT:: .BLKW 1 ;МЕТКА НАЧАЛА ТАБЛИЦЫ ИМЕН
TABTOP::.BLKW 1 ;МЕТКА КОНЦА ТАБЛИЦ СВЯЗИ И ИМЕН
FCB:: .BLKW 1 ;МЕТКА НАЧАЛА ОБЛАСТИ ФАЙЛОВ И ТАБЛИЦЫ СВЯЗИ
HIMEM:: .BLKW 1 ;УКАЗАТЕЛЬ ВЕРХНЕГО АДРЕСА, ДОСТУПНОГО БЕЙСИКУ
ERRS:: .BLKW 1 ;ПРИЗНАК ЗАПРЕТА ВЫПОЛНЕНИЯ ПРОГРАММЫ
TYPE:: .BLKW 1 ;ТИП КОМПИЛИРУЕМОГО ВЫРАЖЕНИЯ
DATBEG::.BLKW 1 ;ukazatelx na~ala bufera DATA
DATPTR::.BLKW 1 ;teku}ij ukazatelx bufera DATA
DATINP::.BLKW 1 ;flag READ/INPUT
NUMBER::.BLKW 1 ;НОМЕР КОМПИЛИРУЕМОЙ СТРОКИ
ADRHLT::.BLKW 1 ;АДРЕС ОСТАНОВА ПРОГРАММЫ
TRFLAG::.BLKW 1 ;ФЛАГ РЕЖИМА ТРАССИРОВКИ
AUTOON::.BLKW 1 ;ФЛАГ РЕЖИМА AUTO
AUINC:: .BLKW 1 ;AUTO ПРИРАЩЕНИЕ
CURLIN::.BLKW 1 ;УКАЗАТЕЛЬ ТЕКУЩЕЙ СТРОКИ
III:: .BLKW 4 ;РАБОЧИЕ ЯЧЕЙКИ ФУНКЦИИ RND
RNDSAV::.BLKW 4 ;ТЕКУЩЕЕ ЗНАЧЕНИЕ RND
;MAXFIL::.BLKW 1 ;maksimalxnoe koli~estwo fajlow dannyh
USRTAB::.BLKW 10. ;ТАБЛИЦА АДРЕССОВ USR
;APRL:: .BLKW 15 ;tablica neqwnogo opredeleniq tipow
PNTSAV::.BLKW 1 ;rabo~aq q~ejka {aga
PFACT:: .BLKW 2 ;ukazatelx bloka parametrow dlq FN
TMP:: .BLKW 1 ;ukazatelx wremennyh deskriptorow
SAVJMP::.BLKW 1 ;adres koda wypolnqemoj programmy
LPTPOS::.BLKB 1 ;s~et~ik golowki printera
.EVEN
;
.IF EQ,MASINA-BK0010
FNKSTR::.BLKB 170. ;БУФЕР ТЕКСТОВ ФУНКЦИОНАЛЬНЫХ КЛАВИШ
$SCRT: .BLKW 1 ;rabo~aq peremennaq DRAW
.IF EQ,KONTYP-KLAS
COPPNT: .BLKW 1 ;ukazatelx ozu |krana dlq COPY
EKRHUK: .BLKW 1 ;adres dopoln. podpr.
.ENDC
;
.IFF
TABX:: .BLKB 1 ;НО. ПОЗИЦИИ КУРСОРА
TABY:: .BLKB 1 ;НО. СТРОКИ КУРСОРА
SIIKP:: .BLKB 1 ;ПРИЗНАК ЗАПИСИ КОДА ИЗ КЛАВИАТУРЫ
RLPOZ:: .BLKB 1 ;ПРИЗНАК РУС. ЛАТ.
SAUG:: .BLKW 4 ;ХРАНЕНИЕ ВЕКТОРА ПРЕРЫВАНИЯ КЛАВИАТУРЫ
;И КОМАНД ПЕРЕЗАПУСКА СИСТЕМЫ
.IFTF
WRITE:: .BLKW 1 ;adres drajwera ustrojstwa wne{nej pamqti
IODEV:: .BLKW 1 ;НОМЕР ТЕКУЩЕГО ФАЙЛА
INK:: .BLKW 1 ;БУФЕР INKEY
BUF:: .BLKB 400 ;БУФЕР ВВОДА
BUFOUT::.BLKB 30 ;БУФЕР ВЫВОДА
TEXT:: .BLKW 1 ;ОБЛАСТЬ ПРОГРАММЫ ПОЛЗОВАТЕЛЯ
;
; ====================
; ****ПУСК СИСТЕМЫ****
; ====================
;
.GLOBL MONIT,TRAP,CLRTXT,BC,CASCII,BLOCKN,FNDBUF,NEXDBL,NEXJMP
.GLOBL TOINT,$B93,$B95,ID,SI,DI,$DMUL$,SETST,CAS,JMP,DFNRET
.GLOBL LNUM
.=MEMTYP
START::
.IFT
.IF EQ,MEMTYP-ROM
MOV #100000,R1 ;CHECK SUM
MOV #3,R3
4$: MOV #10000,R2
CLR R0
3$: ADD (R1)+,R0
ADC R0
SOB R2,3$
CMP R0,#177777
BEQ 2$
RETURN
2$: SOB R3,4$
.ENDC
;
.IFTF
MOV #STACK,SP
.IFF
MOV AVPK,SAUG
MOV AVPK+2,SAUG+2
MOV 0,SAUG+4
MOV 2,SAUG+6
.IFTF
.IF EQ,MEMTYP-ROM
MOV #MVIDEO,HIMEM
.IFF
MOV #MEMTYP,HIMEM
.ENDC
CLR TRFLAG
CLRB LPTPOS
MOV #200.,STRSIZ
MOV #AUINC,R0
MOV #12,(0)+
MOV #12,(0)+
MOV R0,R1
MOV #40101,(0)+
MOV #44122,(0)+
MOV #37502,(0)+
MOV #52125,(0)+
.REPT 4
MOV (1)+,(0)+
.ENDR
; MOV #1,(R0)+ ;MAXFIL <- 1
MOV #10.,R1
1$: MOV #NOUSR,(0)+ ;НЕОПРЕДЕЛЕННЫЕ ФУНКЦИИ USR
SOB R1,1$
.IFT
MOV #4,@#$SCRT ;SENAS DRAW
; MOV #2000,@#$SCRT
;
.IFTF
; MOV #15,R1 ;neqwnyj tip
;5$: MOV #2004,(R0)+
; SOB R1,5$
;
; CLR (R0)+ ;STOPAR
CLR PNTSAV
CALL MIDM ;ИНИЦИАЛИЗАЦИЯ УСТРОЙСТВ
CALL CLRTXT
.IFT
CALL KINIT ;ИНИЦИАЛИЗАЦИЯ КЛЮЧЕЙ
.ифтф
бр сетв
сум1:: .ворд 0
.ифф
инит: мож #стацк,сп
йср р2,сепап
цалл мидм
бр сетв
.ифтф
;
цтрлц: тст лыгис
бми бреак
мож #стацк,сп
мож #12,р0
цалл исж
ймп монит+4
;
;
встоп:: .быте 12,363,364,357,360,12
;
бреак:: мож #ирпс2-10,ю#бреакв
цлр ю#177660
цлр иодеж
.ифт
емт 34
бит #400,р0
бея 1¤
мож #225,р0