;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; ;* This program reads the entire CMOS into the memory and *; ;* sends it to STDOUT... *; ;* ----------------------------------------------------------- *; ;* THIS SOURCE CODE IS FREEWARE. *; ;* USE THIS PROGRAM AT YOUR OWN RISK. *; ;* *; ;* Written by Zsolt Nagy Perge in Dec. 5. 1998. *; ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; CODE SEGMENT ORG 00100h ASSUME CS:CODE ASSUME DS:CODE ASSUME ES:CODE ASSUME SS:CODE ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; ;* CONSTANTS *; ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; CMOSSIZE EQU 128 ; CMOS memory size STACKSIZE EQU 1024 ; Stack size Buffer EQU 0FFFFh - STACKSIZE - CMOSSIZE ; Buffer address ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; ;* PROGRAM ENTRY *; ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Entry: ; Setup for STOSB... MOV CX,CMOSSIZE ; Number of bytes to read MOV DI,Buffer + CMOSSIZE; Calculate Destination Address STD ; Set Direction Flag. ; (This will cause STOSB to ; decrement DI each time...) ReadBYTE: ; Read one byte from CMOS memory... MOV AL,CL ; AL = CL (counter) DEC AL ; Decrement AL OUT 070h,AL ; Address CMOS (AL) IN AL,071h ; Read a byte from CMOS into AL STOSB ; Store AL in ES:DI. ; Loop until all read... LOOP ReadBYTE ; Loop, until CX is zero... ; Write CMOS memory image to STDOUT... MOV AH,040h ; Tell DOS to write... MOV BX,00001h ; File Handle (STDOUT) MOV CX,CMOSSIZE ; Number of bytes to write MOV DX,Buffer + 1 ; Buffer INT 021h ; Write. ; Terminate program. RET ; Return to DOS... ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; CODE ENDS END Entry ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;