From 2d04cacc5322951f187bb17e017c12920ac8ebe2 Mon Sep 17 00:00:00 2001 From: Mark Zbikowski Date: Thu, 25 Apr 2024 21:24:10 +0100 Subject: MZ is back! --- v4.0/src/CMD/FORMAT/DISPLAY.ASM | 177 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 v4.0/src/CMD/FORMAT/DISPLAY.ASM (limited to 'v4.0/src/CMD/FORMAT/DISPLAY.ASM') diff --git a/v4.0/src/CMD/FORMAT/DISPLAY.ASM b/v4.0/src/CMD/FORMAT/DISPLAY.ASM new file mode 100644 index 0000000..10ea538 --- /dev/null +++ b/v4.0/src/CMD/FORMAT/DISPLAY.ASM @@ -0,0 +1,177 @@ +; + +;***************************************************************************** +;***************************************************************************** +;UTILITY NAME: FORMAT.COM +; +;MODULE NAME: DISPLAY.ASM +; +; +; Change List: AN000 - New code DOS 3.3 spec additions +; AC000 - Changed code DOS 3.3 spec additions +;***************************************************************************** +;***************************************************************************** + + +; +;***************************************************************************** +; Define Segment ordering +;***************************************************************************** +; + + +.SEQ ; + +PSP segment public para 'DUMMY' +PSP ends + +data segment public para 'DATA' ; +Public Test_Data_Start +Test_Data_Start label byte +data ends ; + +stack segment para stack + db 62 dup ("-Stack!-") ; (362-80h) is the additionsal IBM ROM + assume ss:stack +stack ends + + +code segment public para 'CODE' ; + assume cs:code,ds:data ; +code ends + +End_Of_Memory segment public para 'BUFFERS' ; +Public Test_End +Test_End label byte +End_Of_Memory ends ; + + +; +;***************************************************************************** +; INCLUDE FILES +;***************************************************************************** +; + +.xlist +INCLUDE FORCHNG.INC +INCLUDE FOREQU.INC +INCLUDE FORMSG.INC +INCLUDE SYSMSG.INC +.list + +; +;***************************************************************************** +; Message Services +;***************************************************************************** +; + + +MSG_UTILNAME + + +data segment public para 'DATA' +Msg_Services +data ends + +code segment public para 'CODE' +Msg_Services +Msg_Services +Msg_Services +Msg_Services +code ends + +; +;***************************************************************************** +; Public Declarations +;***************************************************************************** +; + + Public SysDispMsg + Public SysLoadMsg + + +; +;*************************************************************************** +; Message Structures +;*************************************************************************** +; + + +Message_Table struc ; ;AN000; + ; +Entry1 dw 0 ; ;AN000; +Entry2 dw 0 ; ;AN000; +Entry3 dw 0 ; ;AN000; +Entry4 dw 0 ; ;AN000; +Entry5 db 0 ; ;AN000; +Entry6 db 0 ; ;AN000; +Entry7 dw 0 ; ;AN000; + ; +Message_Table ends ; ;AN000; + + + +code segment public para 'CODE' +;***************************************************************************** +;Routine name&gml Display_Interface +;***************************************************************************** +; +;DescriptioN&gml Save all registers, set up registers required for SysDispMsg +; routine. This information is contained in a message description +; table pointed to by the DX register. Call SysDispMsg, then +; restore registers. This routine assumes that the only time an +; error will be returned is if an extended error message was +; requested, so it will ignore error returns +; +;Called Procedures: Message (macro) +; +;Change History&gml Created 4/22/87 MT +; +;Input&gml ES&gmlDX = pointer to message description +; +;Output&gml None +; +;Psuedocode +;---------- +; +; Save all registers +; Setup registers for SysDispMsg from Message Description Tables +; CALL SysDispMsg +; Restore registers +; ret +;***************************************************************************** + +Public Display_Interface +Display_Interface proc ; ;AN000; + + push ds ; ;AN000; + push ax ;Save registers ;AN000; + push bx ; " " " " ;AN000; + push cx ; " " " " ;AN000; + push dx ; " " " " ;AN000; + push si ; " " " " ;AN000; + push di ; " " " " ;AN000; + mov di,dx ;Change pointer to table ;AN000; + mov dx,data ;Point to data segment + mov ds,dx ; + mov ax,[di].Entry1 ;Message number ;AN000; + mov bx,[di].Entry2 ;Handle ;AN000; + mov si,[di].Entry3 ;Sublist ;AN000; + mov cx,[di].Entry4 ;Count ;AN000; + mov dh,[di].Entry5 ;Class ;AN000; + mov dl,[di].Entry6 ;Function ;AN000; + mov di,[di].Entry7 ;Input ;AN000; + call SysDispMsg ;Display the message ;AN000; + pop di ;Restore registers ;AN000; + pop si ; " " " " ;AN000; + pop dx ; " " " " ;AN000; + pop cx ; " " " " ;AN000; + pop bx ; " " " " ;AN000; + pop ax ; " " " " ;AN000; + pop ds ; ;AN000; + ret ;All done ;AN000; + +Display_Interface endp ; ;AN000; +code ends + end + -- cgit v1.2.3