Тут по соседству CityIceЕ рассказывает об ассемблере для Специалиста...
А работал кто с М80? Такие вот фишки у меня были в своё время. Типа, защита от пионеров.)
Код:
;-----------------------
; Вывод текстовой константы
; call: DspStr
; dbs. <string>,< > ;сообщение, > 1-го символа
; inp: PC - указатель на сообщение (D7=1 - конец)
; HL - адрес вывода в видео-буфере
; outp: PC - адрес конца сообщения+1
; HL - адрес конца вывода в видео-буфере+1
; regs: AF
DspStr: ex de,hl
ex (sp),hl ;получим адрес сообщения - сохраним DE
ex de,hl
DspMsg
ex de,hl
ex (sp),hl ;изменим адрес возврата - восстановим DE
ex de,hl
ret
Где макро DspMsg реально:
;-----------------------
; Отобразим сообщение
; inp: DE - указатель на сообщение
; (бит 7 = 1 - признак конца сообщения)
; HL - адрес вывода в видео-буфере
; outp: DE - указатель на конец сообщения + 1
; HL - адрес конца вывода в видео-буфере + 1
; regs: AF
DspMsg: ld a,(de)
inc de
xor BXlt
bit 7,a
res 7,a
ld (hl),a
inc hl
ret nz
jr DspMsg
При этом
; Без признака конца текста
DBS MACRO str
IRPC x,<str>
db '&x&' xor BXlt
ENDM
ENDM
; С признаком конца текста
DBS. MACRO str,stre
IRPC x,<str>
db '&x&' xor BXlt
ENDM
db '&stre&' or 128 xor BXlt
ENDM
; Кодирование текстовых сообщений
BXlt equ 0a5h
WXlt equ 031h ;для перекодировки адресов в таблице