|
|
We like to keep you abrest of changes with EBL-Plus or related products.
This time, we are pleased to say that EBL itself has be updated from
4.09. Some of the changes were improvements suggested by customers
like yourself. Others were corrections for bugs that were found. In
any case, the complete details of all changes are shown below. We
look forward to improving the product further to meet your needs.
The most recent change was to support Windows 95 as I am sure many of you have been looking forward to. An interesting side note, Microsoft essentually views the DOS side of Win95 as version 7. |
Three parameters will be passed to the program as part of the command line (example: "/o D:\BATCH.NAM 1A2B"). The first '/o' parameter identifies it as being called from EBL with an 'offset' parameter type (other types may be added later). The second 'D:\BATCH.NAM' parameter is the full batch file name currently being executed. The program should examine the batch file to determine what action to perform. The third parameter (1A2B) is the offset in HEX of the currently executing command within the batch file. The program must return a displacement from this offset into %R (word memory location 0:4FE) of the next batch file command to execute. Returning 0 indicates an error. The displacement may be positive or negative.
The program can also return a result if used like a function: "%A = @NAME( parm )". The program should simply write to the standard output device (Stdout). EBL will redirect this output to a temporary result file. EBL will use the first line of results as the value of the function. For speed, the result file that EBL uses can be put on a RAM Disk. Set the environment variable BTEMP to point to the optional RAM Disk (example: SET BTEMP=E:).
Entry into inline code:
AH = 0 = GetKey
1 = GetKeyStatus
2 = Pause (via Timer Tick) complete
DS:SI = Address of the start of the Inline Code
During inline:
AX,BX,CX,DX,SI can be changed freely
Return from Inline:
SI = 0 = Call standard BIOS and reexecute the same inline
AH = x = If SI=0 and AH=2 on entry, AH=x on return indicates
amount of ticks to pause before reexecuting.
Some examples: The following will create a beep when executed within the stack.
BEGSTACK \f0\02\06\b8\07\0e\cd\10\c3; END
It is equivalent to the following assembly language code
Mov Ax,0E07h
Int 10h
Ret
The following will page eject the LPT1 printer
BEGSTACK \f0\02\08\ba\00\00\b0\0c\cd\17\c3; END
and is equivalent to
Mov Dx,0
Mov Al,0Ch
Int 17h
Ret
The following automatically types the word 'ACCOUNT', then will allow 3 keystrokes to be manually entered, then the enter key will be pressed after this.
BEGSTACK ACCOUNT; \f0\02\12\EB\02\04\00\80\FC\00\75\05\FF\4C\02\74\03\BE\00\00\C3;END
and the inline code is equivalent to the following. This example demonstrates how local storage can be maintained for the inline code. It also shows how the stack can be stopped until specific events occur, in this case waiting for the application to request 3 keys.
Jmp short Me ; Jump over local storage
Dw 4 ; Define local counter
Me: Cmp Ah,0 ; Did App request a key?
Jne Restart ; No, am counting just keys
Dec Word ptr [si+2] ; Decrement the count of keys
Je Done ; Count is over?
Restart: Mov Si,0 ; No, SI = 0 means restart
Done: Ret ; Else continue & release stack