;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; ;* This program reads a CMOS memory image (128 bytes) *; ;* from STDIN and then writes it into the CMOS memory. *; ;* ----------------------------------------------------------- *; ;* CAUTION: Always make a backup copy of your CMOS memory *; ;* (by SAVECMOS) before using this program! *; ;* ----------------------------------------------------------- *; ;* 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 8192 ; Stack size Buffer EQU 0FFFFh - STACKSIZE - CMOSSIZE ; Buffer address ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; ;* PROGRAM ENTRY *; ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; Entry: ; Read CMOS Memory Image from STDIN... MOV AH,03Fh ; Tell DOS to read... XOR BX,BX ; File Handle (STDIN) MOV CX,CMOSSIZE ; Number of bytes to read MOV DX,Buffer ; Buffer INT 021h ; Read. ; Setup for LODSB... MOV SI,Buffer + CMOSSIZE - 1 ; Calculate Start Address STD ; Set Direction Flag. (This will cause ; LODSB to decrement SI each time...) WriteBYTE: ; Write one byte into the CMOS memory... MOV AL,CL ; AL = CL (counter) DEC AL ; Decrement AL OUT 070h,AL ; Address CMOS (AL) LODSB ; Load byte into AL OUT 071h,AL ; Write AL to CMOS ; Loop until all written... LOOP WriteBYTE ; Loop, until CX is zero... ; Terminate program. RET ; Return to DOS... ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *; CODE ENDS END Entry ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *;