Программирование в среде IS-DOS 1993 г.

Приложения к системным рестартам - примеры программ на ассемблере для ОС IS-DOS.


11. ПРИМЕРЫ ПРОГРАММ НА АССЕМБЛЕРЕ ДЛЯ ОС IS-DOS

1. Драйвер печати EPROF.LPR
Модуль компиляции драйвера EPROF.BAT

>

as eprof.as

link eprof.obj /а25000 /out eprof.lpr

>

Модуль программы драйвера EPROF.ASfM-для старых версий AS.COM)

; eprof.lpr ( Драйвер печати )
; 02.02.94 23:56
; Набран в IS-EDITe

; Адрес загрузки: 50000/#с350

ORG 50000

; Вектор символьного устройства вывода

MEM00 EQU $-1 ;

DEFW LC3CE ;

МЕМ01 EQU $-1 ;

DEFW LC37D ;

МЕМ02 EQU $-1 ;

DEFW LC3BF ;

МЕМОЗ EQU $-1 ;

DEFW LC3BF ;

DEFB #03 ;

DEFW #0000 ;

DEFW #0000 ;

DEFB #01 ;

DEFW #0000 ;

У

LC360 PUSH ВС

PUSH DE

PUSH HL

LD ВС,#0006

ADD HL,ВС

MEM04 EQU $

CALL LC372

POP HL

POP DE

POP ВС
DI

RET NC

POP HL

JR LC3B8

LC372 EI

PUSH AF

LD C,#08 ;Была ли нажата клавиша ?

RST #10

POP AF

LD E,(HL)

INC HL

LD D,(HL)

EX DE,HL

JP (HL)

LC37D PUSH AF

LD C,#12 ; Возврат вектора символьного устройства

RST #10

EXX

POP AF

CP #0D

JR NZ,LC396 ;Переход, если не конец строки (код 13)

BIT О,(HL)

JR Z.LC3C0

МЕМ05 EQU $

CALL LC396

RET С

MEM05 EQU $

CALL LC3BF ;Ret

LD A,#OA ;После кода 13 вывести код перевода строки

JR LC396

LC396 LD Е, А

LD A,#0F

OUT (#3F),A
DI

LC39C CALL #1F54 Проверка на "BREAK"

JR NC.MEM07 ;Если нажата

IN A,(#5F)
RLA

JR C.LC39C ;0жидание сигнала готовности принтера

LD А, Е

OUT (#3F),А ;Вывести символ в порт данных

LD А,#0 Е

OUT (#5F),А ;Выставить строб

LC3AD CALL #1F54

JR NC,MEM08

IN A,(#5F)
RLA

JR NC,LC3AD ;0жидание готовности принтера

LC3B7 XOR A

LC3B8 LD E,#0F

LD С,#5F

OUT (C),E ;Вывести строб
EI

LC3BF RET

LC3C0 LD A,#96

JR LC360

MEM07 CALL LC3C0

JR LC39C

МЕМ08 CALL LC3C0

JR LC3AD

LC3CE INC A

RET Z

LD A,#88

OUT (#7F),A

JR LC3B7

;Область адресов настройки

DEFW #FFFF ;Маркер начала области

DEFW MEMOO,MEM01,MEM02,MEM03

DEFW MEM04,MEM05,MEM06,MEM07

DEFW MEM08

2. Программа изменения размера кэша
Модуль компиляции программы CACHE.ВАТ

»

as cache.as

link cache.obj /a24000

• _ _ _ _ _

»

Модуль программы CACHE.AS(М-для старых версий AS.COM)

; МОДУЛЬ CACHE.AS, набран в IS-EDITe
; cache.com - программа, позволяющая изменять
;размер кэш диска в IS'DOS.

; Текст программы cache.as также служит примером
;работы с командной строкой.

; Компонуется программа из cache.obj и таблицы
;системных рестартов rst.gtb.

; Возмжен запуск компоновки по нажатию ENTER,
;выбрав курсором cache.obj. В этом случае в файле
;extent.txt должна быть строка:
; as :as /old/sym S:ASrst /auto

; предполагается, что as.com находится в каталоге,
определенном для поиска по умолчанию, a rst.gtb в
;каталоге S:AS

; Она разбирается с командной строкой, снимает
;ключи и , встретив ключ с, считывает значение чис-
;ла после него в регистр А и вызывает системный
;рестарт creat для изменения размера кэш памяти
; системы.

; Программа достаточно "умная", поэтому не поз-
волит задать размер кэш диска меньше 6 блоков.
;Программа также служит примером работы с командной
; строкой

; Формат запуска, например:

cache /с 10

;После запуска можно посмотреть размер доступной
;пользователю памяти с помощью show.com, которая
;выдает адрес начала кэш памяти. Это и есть вершина
;для размещения программ пользователя.
; Системная переменная utop ограничивает макси-
мальный размер задания кэш памяти. Если он превы-
шает допустимый, то ключ будет считаться недопус-
тимым и произойдет выход с ошибкой 23.

ORG 23904

CALL KLINI

RET С

XOR A

LD A,#F4
RET

; keyan.as

KLINI

LD C,$opcat

RST 16

RET С

RET NZ
EXX

CALL KEYAN

RET С

JR KLINI

KEYAN LD A,"/"

CP (HL)

JR NZ,NAME

WKO INC HL

LD B,(HL)

PUSH ВС

INC HL

PUSH HL

LD B,0

WK1 LD A," "

CP (HL)

JR Z.WK2

LD A,"/"

CP (HL)

JR Z, WK2

LD A,13

CP (HL)

JR Z,WK2

INC HL

INC В

JR WK1

WK2 POP DE ;-pointer to begining of number ASCII buffer.

PUSH HL ;pointer of the new element -1.

INC В

DEC В

JR Z,WK3 ;no numeric symbols.

EX DE,HL ;HL-begi ni ng of ASCII buffer.

LD А,В ;number of elements in buffer.

LD В,10 ;base of the number by ignor.

LD C,$a_d

RST 16

JR C,ERR
EXX

EX DE,HL

WK3 POP HL

POP AF

PUSH HL

LD HL,KLANL

RES 5,A

LD C,$analy

RST 16

LD A,23

POP HL

RET С

LD A,"/"

CP (HL)

JR Z.WKO ;key "/" followed without the " " before it.

XOR A

RET Z

ERR

POP HL

POP HL
RET

************************
KLANL

DEFB "С"

DEFW CACHE

DEFB 255

DEFW EMPTY

************************

CACHE

LD A, E

CP 6

JR NC.CCl

LD A, 6

CC1

LD C,Screat

RST 16

RET С

XOR A
RET

EMPTY

SCF
RET

* **********************

ФАЙЛ, СОДЕРЖАЩИЙ СПИСОК СИСТЕМНЫХ РЕСТАРТОВ
; МОДУЛЬ RST.AS, набран в IS-EDITe

; Если метка или имя процедуры начинается с символа '$', она
; считается глобальной и видна во всех вызывающих программах.
; (имеет смысл, когда программа компонуется из разных модулей .0BJ)
; Локальные метки видны в каждом .0BJ свои, даже если в 2-х
; отдельных они будут одинаковы.

$creat EQU 0 ; Управление устройствами

$clear EQU 1

$flush EQU 2

Sttyin EQU 7

$kwait EQU 8

$ktest EQU 9

$ttyou EQU 10

$prcpl EQU 11

$prapd EQU 12

$b i nit EQU 15

$g_cnf EQU 16

$g_tyd EQU 18

$stchn EQU 22

$delch EQU 23

$newch EQU 25

$swtyp EQU 27

$ldnew EQU 29

$l_im2 EQU 30

$erdrv EQU 31

» - __

$open EQU 32 ; Файловая служба

$openl EQU 33

$mkdir EQU 34

$crfi1 EQU 35

Serfi1 EQU 36

$fopen EQU 37

$opnum EQU 38

$gname EQU 39

$putf EQU 40

$rpart EQU 41

$wpart EQU 42

$rifle EQU 43

$wifle EQU 44

$fadd EQU 47

$fcut EQU 48

$eadd EQU 49

$ecut EQU 50

$g_cat EQU 51

$find EQU 52

$bkfcb EQU 53

$p_sta EQU 54

$g_sta EQU 55

$di str EQU 56

$retrn EQU 57

$paste EQU 58

$crf_ EQU 59

$erf__EQU 60

$rvblk EQU 61

$wvblk EQU 62

$free EQU 63

• ^ ^

»

$oparm EQU 64 ; Работа с командной строкой

$fmrst EQU 65

$comst EQU 66

$opcat EQU 67

$exeba EQU 68

$g_com EQU 69

$traris EQU 70

$g_way EQU 71

$run EQU 72

$p_com EQU 73

$dvtrn EQU 74

$newco EQU 75

$newca EQU 76

$rcdel EQU 77

$c-p_ir EQU 78

$convr EQU 79

$fncor EQU 80

$fndev EQU 81

$opres EQU 82

$exere EQU 83

$swrun EQU 84
• _

1

;$empt0 EQU 96 ; Оконная служба

$wt EQU 97

$box EQU 98

$awt EQU 99

$awtc EQU 100

$lwt EQU 101

$adrwt EQU 102

Slenwt EQU 103

$prstr EQU 104

Siniwt EQU 105

Spane1 EQU 106

$wtpos EQU 107

$str EQU 108

$lnstr EQU 109

$smbgt EQU 110

$beep EQU 111

$scrol . EQU 112

Stylin EQU 113

$g_scr EQU 114

$cls EQU 115

;$emptl EQU 116

;$empt2 EQU 117

$y__EQU 118

$n__EQU 119

$crAon EQU 120

$crAof EQU 121

;$empt3 EQU 122

;$empt3 EQU 123

$d_a EQU 124

$a_d EQU 125

Sanaly EQU 126

$edstr EQU 127

• _____________ _ _

»

$shel0 EQU 128 ; Оболочка (SHELL)

$shel1 EQU 129

$shel2 EQU 130

$pnvi e EQU 131

$shout EQU 132

$pAcsr EQU 133

$g_csr EQU 134

$g_mpa EQU 135

$ed_di EQU 136

$mmenu EQU 137

$g_cur EQU 138

$mwai t EQU 139

$g_dev EQU 140

;$emO EQU 141

$shsub EQU 142

$cpfi1 EQU 143

$shpan EQU 144

$menu EQU 145

$funct EQU 146




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Развитие Спектрума - Пятый элемент.
SOFTWARE - Люди, как боги: сценарий к игре Elite III
Презент - описание игры Dark Squares v1.98 (demo version).
HELP - HELP к читалке для супер-тормозов.
UFO - моей деточки бензинчик кончился !!!

В этот день...   21 ноября