A: In Turbo Pascal
versions prior 6.0 assembler code could not be
directly included in the code. Instead one had to assemble the
code
into inline statements. Consider the task of rebooting the PC
(without disk closing and cache flushing). The assembler code for
this is
mov ax,$40
mov ds,ax
mov wo [$72],$1234
jmp $FFFF:$0000
To assemble this code into an inline statement write the following
file calling it e.g. debug.in. The empty line is important. Also
carefully note that debug assumes hexadecimal notation. Do not
use
the $ designator in debug.in.
.... begin debug.in, cut here ....
a 100
mov ax,40
mov ds,ax
mov wo [72],1234
jmp FFFF:0000
u 100
q
.... end debug.in, cut here ....
Give the following command
debug < debug.in
You'll get
0E9E:0100 B84000 MOV AX,0040
0E9E:0103 8ED8 MOV DS,AX
0E9E:0105 C70672003412 MOV WORD PTR [0072],1234
0E9E:010B EA0000FFFF JMP FFFF:0000
This translates into
Inline ($B8/$40/$00/
$8E/$D8/
$C7/$06/$72/$00/$34/$12/
$EA/$00/$00/$FF/$FF);
A2: You can also utilize
an inline <--> asm converter called
36337 Apr 26 1988
ftp://garbo.uwasa.fi/pub/pc/turbopas/inlin219.zip
inlin219.zip Inline assembler for Turbo Pascal, w/src, D.Baldwin
It has two sources, inline.pas and uninline.pas which you can
compile to do the conversions in both directions for you. For
example, if you have a file test.asm containing the
mov ax,$0040
mov ds,ax
mov word ptr [$72],$1234
jmp far $FFFF:$0000
then "inline test.asm" will produce test.obj with the
following,
expected contents
Inline(
$B8/$40/$00/ {mov ax,$0040}
$8E/$D8/ {mov ds,ax}
$C7/$06/$72/$00/$34/$12/ {mov word ptr [$72],$1234}
$EA/$00/$00/$FF/$FF); {jmp far $FFFF:$0000}