forked from KolibriOS/kolibrios
Some corrections to structure. Unziped files apm.zip and skin_v3.zip!
git-svn-id: svn://kolibrios.org@110 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
630234432f
commit
f9a3eb973f
Binary file not shown.
255
kernel/trunk/docs/apm/README.TXT
Normal file
255
kernel/trunk/docs/apm/README.TXT
Normal file
@ -0,0 +1,255 @@
|
|||||||
|
Advanced Power Management
|
||||||
|
|
||||||
|
SYSTEM CALL
|
||||||
|
|
||||||
|
eax = 70
|
||||||
|
dx = íîìåð ôóíêöèè APM BIOS (àíàëîãè÷åí ax â ðåàëüíîì ðåæèìå)
|
||||||
|
îñòàëüíûå (bx, cx) ðåãèñòðû ïî ñïåöèôèêàöèè (ñì. apm.txt)
|
||||||
|
ðåçóëüòàò : ïî ñïåöèôèêàöèè (âêëþ÷àÿ CF), ñòàðøàÿ ÷àñòü 32 áèòíûõ ðåãèñòðîâ íå îïðåäåëåíà
|
||||||
|
|
||||||
|
|
||||||
|
MEMORY MAP
|
||||||
|
|
||||||
|
Boot:
|
||||||
|
0x9040 - dword - entry point of APM BIOS
|
||||||
|
0x9044 - word - version (BCD)
|
||||||
|
0x9046 - word - flags
|
||||||
|
|
||||||
|
|
||||||
|
ÈÇÌÅÍÅÍÈß
|
||||||
|
|
||||||
|
sys32.inc
|
||||||
|
syscall.inc
|
||||||
|
kernel.asm
|
||||||
|
bootcode.inc
|
||||||
|
|
||||||
|
##############[core\sys32.inc]#####################
|
||||||
|
|
||||||
|
Òðè íîâûõ äåñêðèïòîðà
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
; GDT TABLE
|
||||||
|
|
||||||
|
gdts:
|
||||||
|
|
||||||
|
dw gdte-$-1
|
||||||
|
dd gdts
|
||||||
|
dw 0
|
||||||
|
|
||||||
|
int_code_l:
|
||||||
|
os_code_l:
|
||||||
|
|
||||||
|
dw 0xffff
|
||||||
|
dw 0x0000
|
||||||
|
db 0x00
|
||||||
|
dw 11011111b *256 +10011010b
|
||||||
|
db 0x00
|
||||||
|
|
||||||
|
int_data_l:
|
||||||
|
os_data_l:
|
||||||
|
|
||||||
|
dw 0xffff
|
||||||
|
dw 0x0000
|
||||||
|
db 0x00
|
||||||
|
dw 11011111b *256 +10010010b
|
||||||
|
db 0x00
|
||||||
|
; --------------- APM ---------------------
|
||||||
|
apm_code_32:
|
||||||
|
dw 0x10 ; limit 64kb
|
||||||
|
db 0, 0, 0
|
||||||
|
dw 11011111b *256 +10011010b
|
||||||
|
db 0x00
|
||||||
|
apm_code_16:
|
||||||
|
dw 0x10
|
||||||
|
db 0, 0, 0
|
||||||
|
dw 10011111b *256 +10011010b
|
||||||
|
db 0x00
|
||||||
|
apm_data_16:
|
||||||
|
dw 0x10
|
||||||
|
db 0, 0, 0
|
||||||
|
dw 10011111b *256 +10010010b
|
||||||
|
db 0x00
|
||||||
|
; -----------------------------------------
|
||||||
|
app_code_l:
|
||||||
|
dw ((0x80000000-std_application_base_address) shr 12) and 0xffff
|
||||||
|
dw 0
|
||||||
|
db 0
|
||||||
|
dw 11010000b*256+11111010b+256*((0x80000000-std_application_base_address) shr 28)
|
||||||
|
db std_application_base_address shr 24
|
||||||
|
|
||||||
|
app_data_l:
|
||||||
|
dw (0x80000000-std_application_base_address) shr 12 and 0xffff
|
||||||
|
dw 0
|
||||||
|
db 0
|
||||||
|
dw 11010000b*256+11110010b+256*((0x80000000-std_application_base_address) shr 28)
|
||||||
|
db std_application_base_address shr 24
|
||||||
|
|
||||||
|
graph_data_l:
|
||||||
|
|
||||||
|
dw 0x3ff
|
||||||
|
dw 0x0000
|
||||||
|
db 0x00
|
||||||
|
dw 11010000b *256 +11110010b
|
||||||
|
db 0x00
|
||||||
|
|
||||||
|
tss0_l:
|
||||||
|
times (max_processes+10) dd 0,0
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
##############[core\syscall.inc]###################
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
|
||||||
|
dd undefined_syscall ; 65-UTF
|
||||||
|
dd sys_process_def ; 66-Process definitions - keyboard
|
||||||
|
dd sys_window_move ; 67-Window move or resize
|
||||||
|
dd sys_internal_services ; 68-Some internal services
|
||||||
|
dd sys_debug_services ; 69-Debug
|
||||||
|
dd sys_apm ; 70-APM
|
||||||
|
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
##############[kernel.asm]#########################
|
||||||
|
|
||||||
|
|
||||||
|
×àñòü 1 (ïîñëå ìåòêè "; SAVE REAL MODE VARIABLES"):
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
; SAVE REAL MODE VARIABLES
|
||||||
|
|
||||||
|
; --------------- APM ---------------------
|
||||||
|
mov eax, [0x2f0000 + 0x9040] ; entry point
|
||||||
|
mov dword[apm_entry], eax
|
||||||
|
mov word [apm_entry + 4], apm_code_32 - gdts
|
||||||
|
|
||||||
|
mov eax, [0x2f0000 + 0x9044] ; version & flags
|
||||||
|
mov [apm_vf], eax
|
||||||
|
; -----------------------------------------
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
×àñòü 2 (ñèñòåìíûé âûçîâ, ðàñïîëîæåíèå íå êðèòè÷íî,
|
||||||
|
ÿ ðàñïîëîæèë ïåðåä ìåòêîé "undefined_syscall:")
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
; --------------- APM ---------------------
|
||||||
|
apm_entry dp 0
|
||||||
|
apm_vf dd 0
|
||||||
|
align 4
|
||||||
|
sys_apm:
|
||||||
|
cmp word [apm_vf], 0 ; Check APM BIOS enable
|
||||||
|
jne @f
|
||||||
|
or [esp + 40], byte 1 ; error
|
||||||
|
mov [esp + 36], dword 8 ; 32-bit protected-mode interface not supported
|
||||||
|
ret
|
||||||
|
|
||||||
|
@@: xchg eax, ecx
|
||||||
|
xchg ebx, ecx
|
||||||
|
|
||||||
|
cmp al, 3
|
||||||
|
ja @f
|
||||||
|
and [esp + 40], byte 0xfe ; emulate func 0..3 as func 0
|
||||||
|
mov eax, [apm_vf]
|
||||||
|
mov [esp + 36], eax
|
||||||
|
shr eax, 16
|
||||||
|
mov [esp + 32], eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
@@: call pword [apm_entry] ; call APM BIOS
|
||||||
|
mov [esp + 8 ], edi
|
||||||
|
mov [esp + 12], esi
|
||||||
|
mov [esp + 24], ebx
|
||||||
|
mov [esp + 28], edx
|
||||||
|
mov [esp + 32], ecx
|
||||||
|
mov [esp + 36], eax
|
||||||
|
setc al
|
||||||
|
and [esp + 40], byte 0xfe
|
||||||
|
or [esp + 40], al
|
||||||
|
ret
|
||||||
|
; -----------------------------------------
|
||||||
|
|
||||||
|
align 4
|
||||||
|
|
||||||
|
undefined_syscall: ; Undefined system call
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
##############[boot\bootcode.inc]##################
|
||||||
|
|
||||||
|
Ïåðåä ìåòêîé "; DISPLAY VESA INFORMATION"
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
||||||
|
; --------------- APM ---------------------
|
||||||
|
push 0
|
||||||
|
pop es
|
||||||
|
mov word [es : 0x9044], 0 ; ver = 0.0 (APM not found)
|
||||||
|
mov ax, 0x5300
|
||||||
|
xor bx, bx
|
||||||
|
int 0x15
|
||||||
|
jc apm_end ; APM not found
|
||||||
|
test cx, 2
|
||||||
|
jz apm_end ; APM 32-bit protected-mode interface not supported
|
||||||
|
mov [es : 0x9044], ax ; Save APM Version
|
||||||
|
mov [es : 0x9046], cx ; Save APM flags
|
||||||
|
|
||||||
|
; Write APM ver ----
|
||||||
|
jmp @f
|
||||||
|
msg_apm:db ' APM x.x ', 0
|
||||||
|
@@: and ax, 0xf0f
|
||||||
|
add ax, '00'
|
||||||
|
mov [msg_apm - 0x10000 + 5], ah
|
||||||
|
mov [msg_apm - 0x10000 + 7], al
|
||||||
|
_setcursor 0, 3
|
||||||
|
mov si, msg_apm - 0x10000
|
||||||
|
call printplain
|
||||||
|
_setcursor d80x25_top_num,0
|
||||||
|
; ------------------
|
||||||
|
|
||||||
|
mov ax, 0x5304 ; Disconnect interface
|
||||||
|
xor bx, bx
|
||||||
|
int 0x15
|
||||||
|
mov ax, 0x5303 ; Connect 32 bit mode interface
|
||||||
|
xor bx, bx
|
||||||
|
int 0x15
|
||||||
|
; init selectors
|
||||||
|
movzx eax, ax ; real-mode segment base address of protected-mode 32-bit code segment
|
||||||
|
shl eax, 4
|
||||||
|
mov [apm_code_32 - 0x10000 + 2], ax
|
||||||
|
shr eax, 16
|
||||||
|
mov [apm_code_32 - 0x10000 + 4], al
|
||||||
|
movzx ecx, cx ; real-mode segment base address of protected-mode 16-bit code segment
|
||||||
|
shl ecx, 4
|
||||||
|
mov [apm_code_16 - 0x10000 + 2], cx
|
||||||
|
shr ecx, 16
|
||||||
|
mov [apm_code_16 - 0x10000 + 4], cl
|
||||||
|
movzx edx, dx ; real-mode segment base address of protected-mode 16-bit data segment
|
||||||
|
shl edx, 4
|
||||||
|
mov [apm_data_16 - 0x10000 + 2], dx
|
||||||
|
shr edx, 16
|
||||||
|
mov [apm_data_16 - 0x10000 + 4], dl
|
||||||
|
mov [es : 0x9040], ebx ; offset of APM entry point
|
||||||
|
apm_end:
|
||||||
|
; -----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
; DISPLAY VESA INFORMATION
|
||||||
|
|
||||||
|
.............
|
||||||
|
.............
|
||||||
|
|
518
kernel/trunk/docs/apm/apm.txt
Normal file
518
kernel/trunk/docs/apm/apm.txt
Normal file
@ -0,0 +1,518 @@
|
|||||||
|
--------p-155300-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
|
||||||
|
AX = 5300h
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
Return: CF clear if successful
|
||||||
|
AH = major version (BCD)
|
||||||
|
AL = minor version (BCD)
|
||||||
|
BX = 504Dh ("PM")
|
||||||
|
CX = flags (see #00472)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (06h,09h,86h) (see #00473)
|
||||||
|
BUG: early versions of the Award Modular BIOS with built-in APM support
|
||||||
|
reportedly do not set BX on return
|
||||||
|
|
||||||
|
Bitfields for APM flags:
|
||||||
|
Bit(s) Description (Table 00472)
|
||||||
|
0 16-bit protected mode interface supported
|
||||||
|
1 32-bit protected mode interface supported
|
||||||
|
2 CPU idle call reduces processor speed
|
||||||
|
3 BIOS power management disabled
|
||||||
|
4 BIOS power management disengaged (APM v1.1)
|
||||||
|
5-7 reserved
|
||||||
|
|
||||||
|
(Table 00473)
|
||||||
|
Values for APM error code:
|
||||||
|
01h power management functionality disabled
|
||||||
|
02h interface connection already in effect
|
||||||
|
03h interface not connected
|
||||||
|
04h real-mode interface not connected
|
||||||
|
05h 16-bit protected-mode interface already connected
|
||||||
|
06h 16-bit protected-mode interface not supported
|
||||||
|
07h 32-bit protected-mode interface already connected
|
||||||
|
08h 32-bit protected-mode interface not supported
|
||||||
|
09h unrecognized device ID
|
||||||
|
0Ah invalid parameter value in CX
|
||||||
|
0Bh (APM v1.1) interface not engaged
|
||||||
|
0Ch (APM v1.2) function not supported
|
||||||
|
0Dh (APM v1.2) Resume Timer disabled
|
||||||
|
0Eh-1Fh reserved for other interface and general errors
|
||||||
|
20h-3Fh reserved for CPU errors
|
||||||
|
40h-5Fh reserved for device errors
|
||||||
|
60h can't enter requested state
|
||||||
|
61h-7Fh reserved for other system errors
|
||||||
|
80h no power management events pending
|
||||||
|
81h-85h reserved for other power management event errors
|
||||||
|
86h APM not present
|
||||||
|
87h-9Fh reserved for other power management event errors
|
||||||
|
A0h-FEh reserved
|
||||||
|
FFh undefined
|
||||||
|
--------p-155301-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
|
||||||
|
AX = 5301h
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (02h,05h,07h,09h) (see #00473)
|
||||||
|
Note: on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
|
||||||
|
compatibility mode until it is informed that the user supports a
|
||||||
|
newer version of APM (see AX=530Eh)
|
||||||
|
SeeAlso: AX=5302h,AX=5303h,AX=5304h
|
||||||
|
--------p-155302-----------------------------
|
||||||
|
INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
|
||||||
|
AX = 5302h
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
Return: CF clear if successful
|
||||||
|
AX = real-mode segment base address of protected-mode 16-bit code
|
||||||
|
segment
|
||||||
|
BX = offset of entry point
|
||||||
|
CX = real-mode segment base address of protected-mode 16-bit data
|
||||||
|
segment
|
||||||
|
---APM v1.1---
|
||||||
|
SI = APM BIOS code segment length
|
||||||
|
DI = APM BIOS data segment length
|
||||||
|
CF set on error
|
||||||
|
AH = error code (02h,05h,06h,07h,09h) (see #00473)
|
||||||
|
Notes: the caller must initialize two consecutive descriptors with the
|
||||||
|
returned segment base addresses; these descriptors must be valid
|
||||||
|
whenever the protected-mode interface is called, and will have
|
||||||
|
their limits arbitrarily set to 64K.
|
||||||
|
the protected mode interface is invoked by making a far call with the
|
||||||
|
same register values as for INT 15; it must be invoked while CPL=0,
|
||||||
|
the code segment descriptor must have a DPL of 0, the stack must be
|
||||||
|
in a 16-bit segment and have enough room for BIOS use and possible
|
||||||
|
interrupts, and the current I/O permission bit map must allow access
|
||||||
|
to the I/O ports used for power management.
|
||||||
|
functions 00h-03h are not available from protected mode
|
||||||
|
on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
|
||||||
|
compatibility mode until it is informed that the user supports a
|
||||||
|
newer version of APM (see AX=530Eh)
|
||||||
|
SeeAlso: AX=5301h,AX=5303h,AX=5304h
|
||||||
|
--------p-155303-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
|
||||||
|
AX = 5303h
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
Return: CF clear if successful
|
||||||
|
AX = real-mode segment base address of protected-mode 32-bit code
|
||||||
|
segment
|
||||||
|
EBX = offset of entry point
|
||||||
|
CX = real-mode segment base address of protected-mode 16-bit code
|
||||||
|
segment
|
||||||
|
DX = real-mode segment base address of protected-mode 16-bit data
|
||||||
|
segment
|
||||||
|
---APM v1.1---
|
||||||
|
SI = APM BIOS code segment length
|
||||||
|
DI = APM BIOS data segment length
|
||||||
|
CF set on error
|
||||||
|
AH = error code (02h,05h,07h,08h,09h) (see #00473)
|
||||||
|
Notes: the caller must initialize three consecutive descriptors with the
|
||||||
|
returned segment base addresses for 32-bit code, 16-bit code, and
|
||||||
|
16-bit data, respectively; these descriptors must be valid whenever
|
||||||
|
the protected-mode interface is called, and will have their limits
|
||||||
|
arbitrarily set to 64K.
|
||||||
|
the protected mode interface is invoked by making a far call to the
|
||||||
|
32-bit code segment with the same register values as for INT 15; it
|
||||||
|
must be invoked while CPL=0, the code segment descriptor must have a
|
||||||
|
DPL of 0, the stack must be in a 32-bit segment and have enough room
|
||||||
|
for BIOS use and possible interrupts, and the current I/O permission
|
||||||
|
bit map must allow access to the I/O ports used for power management.
|
||||||
|
functions 00h-03h are not available from protected mode
|
||||||
|
on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
|
||||||
|
compatibility mode until it is informed that the user supports a
|
||||||
|
newer version of APM (see AX=530Eh)
|
||||||
|
SeeAlso: AX=5301h,AX=5302h,AX=5304h
|
||||||
|
--------p-155304-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
|
||||||
|
AX = 5304h
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h) (see #00473)
|
||||||
|
SeeAlso: AX=5301h,AX=5302h,AX=5303h
|
||||||
|
--------p-155305-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - CPU IDLE
|
||||||
|
AX = 5305h
|
||||||
|
Return: CF clear if successful (after system leaves idle state)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,0Bh) (see #00473)
|
||||||
|
Notes: call when the system is idle and should be suspended until the next
|
||||||
|
system event or interrupt
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
if an interrupt causes the system to resume normal processing, the
|
||||||
|
interrupt may or may not have been handled when the BIOS returns
|
||||||
|
from this call; thus, the caller should allow interrupts on return
|
||||||
|
interrupt handlers may not retain control if the BIOS allows
|
||||||
|
interrupts while in idle mode even if they are able to determine
|
||||||
|
that they were called from idle mode
|
||||||
|
the caller should issue this call continuously in a loop until it needs
|
||||||
|
to perform some processing of its own
|
||||||
|
SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
|
||||||
|
--------p-155306-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - CPU BUSY
|
||||||
|
AX = 5306h
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,0Bh) (see #00473)
|
||||||
|
Notes: called to ensure that the system runs at full speed even on systems
|
||||||
|
where the BIOS is unable to recognize increased activity (especially
|
||||||
|
if interrupts are hooked by other programs and not chained to the
|
||||||
|
BIOS)
|
||||||
|
this call may be made even when the system is already running at full
|
||||||
|
speed, but it will create unnecessary overhead
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
SeeAlso: AX=5305h
|
||||||
|
--------p-155307-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
|
||||||
|
AX = 5307h
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
CX = system state ID (see #00475)
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #00473)
|
||||||
|
Note: should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
SeeAlso: AX=530Ch
|
||||||
|
|
||||||
|
(Table 00474)
|
||||||
|
Values for APM device IDs:
|
||||||
|
0000h system BIOS
|
||||||
|
0001h all devices for which the system BIOS manages power
|
||||||
|
01xxh display (01FFh for all attached display devices)
|
||||||
|
02xxh secondary storage (02FFh for all attached secondary storage devices)
|
||||||
|
03xxh parallel ports (03FFh for all attached parallel ports)
|
||||||
|
04xxh serial ports (04FFh for all attached serial ports)
|
||||||
|
---APM v1.1+ ---
|
||||||
|
05xxh network adapters (05FFh for all attached network adapters)
|
||||||
|
06xxh PCMCIA sockets (06FFh for all)
|
||||||
|
0700h-7FFFh reserved
|
||||||
|
80xxh system battery devices (APM v1.2)
|
||||||
|
8100h-DFFFh reserved
|
||||||
|
Exxxh OEM-defined power device IDs
|
||||||
|
F000h-FFFFh reserved
|
||||||
|
|
||||||
|
(Table 00475)
|
||||||
|
Values for system state ID:
|
||||||
|
0000h ready (not supported for device ID 0001h)
|
||||||
|
0001h stand-by
|
||||||
|
0002h suspend
|
||||||
|
0003h off (not supported for device ID 0001h in APM v1.0)
|
||||||
|
---APM v1.1---
|
||||||
|
0004h last request processing notification (only for device ID 0001h)
|
||||||
|
0005h last request rejected (only for device ID 0001h)
|
||||||
|
0006h-001Fh reserved system states
|
||||||
|
0020h-003Fh OEM-defined system states
|
||||||
|
0040h-007Fh OEM-defined device states
|
||||||
|
0080h-FFFFh reserved device states
|
||||||
|
--------p-155307CX0001-----------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
|
||||||
|
AX = 5307h
|
||||||
|
CX = 0001h
|
||||||
|
BX = 0001h (device ID for all power-managed devices)
|
||||||
|
Return: CF clear
|
||||||
|
Notes: puts the entire system into stand-by mode; normally called in response
|
||||||
|
to a System Stand-by Request notification after any necessary
|
||||||
|
processing, but may also be invoked at the caller's discretion
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
the stand-by state is typically exited on an interrupt
|
||||||
|
SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=5307h/CX=0003h,AX=530Bh
|
||||||
|
--------p-155307CX0002-----------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
|
||||||
|
AX = 5307h
|
||||||
|
CX = 0002h
|
||||||
|
BX = 0001h (device ID for all power-managed devices)
|
||||||
|
Return: after system is resumed
|
||||||
|
CF clear
|
||||||
|
Notes: puts the entire system into a low-power suspended state; normally
|
||||||
|
called in response to a Suspend System Request notification after
|
||||||
|
any necessary processing, but may also be invoked at the caller's
|
||||||
|
discretion
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
the caller may need to update its date and time values because the
|
||||||
|
system could have been suspended for a long period of time
|
||||||
|
SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
|
||||||
|
--------p-155307CX0003-----------------------
|
||||||
|
INT 15 - Advanced Power Management v1.2 - TURN OFF SYSTEM
|
||||||
|
AX = 5307h
|
||||||
|
CX = 0003h
|
||||||
|
BX = 0001h (device ID for all power-managed devices)
|
||||||
|
Return: after system is resumed
|
||||||
|
CF clear
|
||||||
|
Notes: if supported by the system's power supply, turns off the system power
|
||||||
|
SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
|
||||||
|
--------p-155308-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
|
||||||
|
AX = 5308h
|
||||||
|
BX = device ID for all devices power-managed by APM
|
||||||
|
0001h (APM v1.1+)
|
||||||
|
FFFFh (APM v1.0)
|
||||||
|
CX = new state
|
||||||
|
0000h disabled
|
||||||
|
0001h enabled
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473)
|
||||||
|
Notes: when power management is disabled, the system BIOS will not
|
||||||
|
automatically power down devices, enter stand-by or suspended mode,
|
||||||
|
or perform any power-saving actions in response to AX=5305h calls
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
the APM BIOS should never be both disabled and disengaged at the same
|
||||||
|
time
|
||||||
|
SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
|
||||||
|
--------p-155309-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
|
||||||
|
AX = 5309h
|
||||||
|
BX = device ID for all devices power-managed by APM
|
||||||
|
0001h (APM v1.1)
|
||||||
|
FFFFh (APM v1.0)
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h,0Bh) (see #00473)
|
||||||
|
Note: should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
SeeAlso: AX=5308h
|
||||||
|
--------p-15530A-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
|
||||||
|
AX = 530Ah
|
||||||
|
BX = device ID
|
||||||
|
0001h all devices power-managed by APM
|
||||||
|
80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
|
||||||
|
Return: CF clear if successful
|
||||||
|
BH = AC line status
|
||||||
|
00h off-line
|
||||||
|
01h on-line
|
||||||
|
02h on backup power (APM v1.1)
|
||||||
|
FFh unknown
|
||||||
|
other reserved
|
||||||
|
BL = battery status (see #00476)
|
||||||
|
CH = battery flag (APM v1.1+) (see #00477)
|
||||||
|
CL = remaining battery life, percentage
|
||||||
|
00h-64h (0-100) percentage of full charge
|
||||||
|
FFh unknown
|
||||||
|
DX = remaining battery life, time (APM v1.1) (see #00478)
|
||||||
|
---if specific battery unit specified---
|
||||||
|
SI = number of battery units currently installed
|
||||||
|
CF set on error
|
||||||
|
AH = error code (09h,0Ah) (see #00473)
|
||||||
|
Notes: should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
supported in real mode (INT 15) and both 16-bit and 32-bit protected
|
||||||
|
mode
|
||||||
|
|
||||||
|
(Table 00476)
|
||||||
|
Values for APM v1.0+ battery status:
|
||||||
|
00h high
|
||||||
|
01h low
|
||||||
|
02h critical
|
||||||
|
03h charging
|
||||||
|
FFh unknown
|
||||||
|
other reserved
|
||||||
|
SeeAlso: #00477,#00478
|
||||||
|
|
||||||
|
Bitfields for APM v1.1+ battery flag:
|
||||||
|
Bit(s) Description (Table 00477)
|
||||||
|
0 high
|
||||||
|
1 low
|
||||||
|
2 critical
|
||||||
|
3 charging
|
||||||
|
4 selected battery not present (APM v1.2)
|
||||||
|
5-6 reserved (0)
|
||||||
|
7 no system battery
|
||||||
|
Note: all bits set (FFh) if unknown
|
||||||
|
SeeAlso: #00476,#00478
|
||||||
|
|
||||||
|
Bitfields for APM v1.1+ remaining battery life:
|
||||||
|
Bit(s) Description (Table 00478)
|
||||||
|
15 time units: 0=seconds, 1=minutes
|
||||||
|
14-0 battery life in minutes or seconds
|
||||||
|
Note: all bits set (FFFFh) if unknown
|
||||||
|
SeeAlso: #00476,#00477
|
||||||
|
--------p-15530B-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
|
||||||
|
AX = 530Bh
|
||||||
|
Return: CF clear if successful
|
||||||
|
BX = event code (see #00479)
|
||||||
|
CX = event information (APM v1.2) if BX=0003h or BX=0004h
|
||||||
|
bit 0: PCMCIA socket was powered down in suspend state
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,0Bh,80h) (see #00473)
|
||||||
|
Notes: although power management events are often asynchronous, notification
|
||||||
|
will not be made until polled via this call to permit software to
|
||||||
|
only receive event notification when it is prepared to process
|
||||||
|
power management events; since these events are not very time-
|
||||||
|
critical, it should be sufficient to poll once or twice per second
|
||||||
|
the critical resume notification is made after the system resumes
|
||||||
|
from an emergency suspension; normally, the system BIOS only notifies
|
||||||
|
its partner that it wishes to suspend and relies on the partner to
|
||||||
|
actually request the suspension, but no notification is made on an
|
||||||
|
emergency suspension
|
||||||
|
should not be called from within a hardware interrupt handler to avoid
|
||||||
|
reentrance problems
|
||||||
|
SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
|
||||||
|
|
||||||
|
(Table 00479)
|
||||||
|
Values for APM event code:
|
||||||
|
0001h system stand-by request
|
||||||
|
0002h system suspend request
|
||||||
|
0003h normal resume system notification
|
||||||
|
0004h critical resume system notification
|
||||||
|
0005h battery low notification
|
||||||
|
---APM v1.1---
|
||||||
|
0006h power status change notification
|
||||||
|
0007h update time notification
|
||||||
|
0008h critical system suspend notification
|
||||||
|
0009h user system standby request notification
|
||||||
|
000Ah user system suspend request notification
|
||||||
|
000Bh system standby resume notification
|
||||||
|
---APM v1.2---
|
||||||
|
000Ch capabilities change notification (see AX=5310h)
|
||||||
|
------
|
||||||
|
000Dh-00FFh reserved system events
|
||||||
|
01xxh reserved device events
|
||||||
|
02xxh OEM-defined APM events
|
||||||
|
0300h-FFFFh reserved
|
||||||
|
--------p-15530C-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
|
||||||
|
AX = 530Ch
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
Return: CF clear if successful
|
||||||
|
CX = system state ID (see #00475)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,09h) (see #00473)
|
||||||
|
SeeAlso: AX=5307h
|
||||||
|
--------p-15530D-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
|
||||||
|
AX = 530Dh
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
CX = function
|
||||||
|
0000h disable power management
|
||||||
|
0001h enable power management
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473)
|
||||||
|
Desc: specify whether automatic power management should be active for a
|
||||||
|
given device
|
||||||
|
SeeAlso: AX=5308h,AX=530Fh
|
||||||
|
--------p-15530E-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
|
||||||
|
AX = 530Eh
|
||||||
|
BX = device ID of system BIOS (0000h)
|
||||||
|
CH = APM driver major version (BCD)
|
||||||
|
CL = APM driver minor version (BCD) (02h for APM v1.2)
|
||||||
|
Return: CF clear if successful
|
||||||
|
AH = APM connection major version (BCD)
|
||||||
|
AL = APM connection minor version (BCD)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h,0Bh) (see #00473)
|
||||||
|
SeeAlso: AX=5300h,AX=5303h
|
||||||
|
--------p-15530F-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
|
||||||
|
AX = 530Fh
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
CX = function
|
||||||
|
0000h disengage power management
|
||||||
|
0001h engage power management
|
||||||
|
Return: CF clear if successful
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,09h) (see #00473)
|
||||||
|
Notes: unlike AX=5308h, this call does not affect the functioning of the APM
|
||||||
|
BIOS
|
||||||
|
when cooperative power management is disengaged, the APM BIOS performs
|
||||||
|
automatic power management of the system or device
|
||||||
|
SeeAlso: AX=5308h,AX=530Dh
|
||||||
|
--------p-155310-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
|
||||||
|
AX = 5310h
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
0000h (APM BIOS)
|
||||||
|
other reserved
|
||||||
|
Return: CF clear if successful
|
||||||
|
BL = number of battery units supported (00h if no system batteries)
|
||||||
|
CX = capabilities flags (see #00480)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (01h,09h,86h) (see #00473)
|
||||||
|
Notes: this function is supported via the INT 15, 16-bit protected mode, and
|
||||||
|
32-bit protected mode interfaces; it does not require that a
|
||||||
|
connection be established prior to use
|
||||||
|
this function will return the capabilities currently in effect, not
|
||||||
|
any new settings which have been made but do not take effect until
|
||||||
|
a system restart
|
||||||
|
SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
|
||||||
|
|
||||||
|
Bitfields for APM v1.2 capabilities flags:
|
||||||
|
Bit(s) Description (Table 00480)
|
||||||
|
15-8 reserved
|
||||||
|
7 PCMCIA Ring Indicator will wake up system from suspend mode
|
||||||
|
6 PCMCIA Ring Indicator will wake up system from standby mode
|
||||||
|
5 Resume on Ring Indicator will wake up system from suspend mode
|
||||||
|
4 Resume on Ring Indicator will wake up system from standby mode
|
||||||
|
3 resume timer will wake up system from suspend mode
|
||||||
|
2 resume timer will wake up system from standby mode
|
||||||
|
1 can enter global suspend state
|
||||||
|
0 can enter global standby state
|
||||||
|
--------p-155311-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
|
||||||
|
AX = 5311h
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
0000h (APM BIOS)
|
||||||
|
other reserved
|
||||||
|
CL = function
|
||||||
|
00h disable Resume Timer
|
||||||
|
01h get Resume Timer
|
||||||
|
02h set Resume Timer
|
||||||
|
CH = resume time, seconds (BCD)
|
||||||
|
DL = resume time, minutes (BCD)
|
||||||
|
DH = resume time, hours (BCD)
|
||||||
|
SI = resume date (BCD), high byte = month, low byte = day
|
||||||
|
DI = resume date, year (BCD)
|
||||||
|
Return: CF clear if successful
|
||||||
|
---if getting timer---
|
||||||
|
CH = resume time, seconds (BCD)
|
||||||
|
DL = resume time, minutes (BCD)
|
||||||
|
DH = resume time, hours (BCD)
|
||||||
|
SI = resume date (BCD), high byte = month, low byte = day
|
||||||
|
DI = resume date, year (BCD)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #00473)
|
||||||
|
Notes: this function is supported via the INT 15, 16-bit protected mode, and
|
||||||
|
32-bit protected mode interfaces
|
||||||
|
SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
|
||||||
|
--------p-155312-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
|
||||||
|
AX = 5312h
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
0000h (APM BIOS)
|
||||||
|
other reserved
|
||||||
|
CL = function
|
||||||
|
00h disable Resume on Ring Indicator
|
||||||
|
01h enable Resume on Ring Indicator
|
||||||
|
02h get Resume on Ring Indicator status
|
||||||
|
Return: CF clear if successful
|
||||||
|
CX = resume status (0000h disabled, 0001h enabled)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #00473)
|
||||||
|
Notes: this function is supported via the INT 15, 16-bit protected mode, and
|
||||||
|
32-bit protected mode interfaces
|
||||||
|
SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
|
||||||
|
--------p-155313-----------------------------
|
||||||
|
INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
|
||||||
|
AX = 5313h
|
||||||
|
BX = device ID (see #00474)
|
||||||
|
0000h (APM BIOS)
|
||||||
|
other reserved
|
||||||
|
CL = function
|
||||||
|
00h disable timer-based requests
|
||||||
|
01h enable timer-based requests
|
||||||
|
02h get timer-based requests status
|
||||||
|
Return: CF clear if successful
|
||||||
|
CX = timer-based requests status (0000h disabled, 0001h enabled)
|
||||||
|
CF set on error
|
||||||
|
AH = error code (03h,09h,0Ah,0Bh,86h) (see #00473)
|
||||||
|
Notes: this function is supported via the INT 15, 16-bit protected mode, and
|
||||||
|
32-bit protected mode interfaces
|
||||||
|
some BIOSes set AH on return even when successful
|
||||||
|
SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
|
BIN
kernel/trunk/skin/base.bmp
Normal file
BIN
kernel/trunk/skin/base.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 584 B |
BIN
kernel/trunk/skin/base_1.bmp
Normal file
BIN
kernel/trunk/skin/base_1.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 584 B |
31
kernel/trunk/skin/default.asm
Normal file
31
kernel/trunk/skin/default.asm
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
include 'me_skin.inc'
|
||||||
|
|
||||||
|
SKIN_PARAMS \
|
||||||
|
height = bmp_base.height,\ ; skin height
|
||||||
|
margins = [5:1:43:1],\ ; margins [left:top:right:bottom]
|
||||||
|
colors active = [binner=0x00081d:\ ; border inner color
|
||||||
|
bouter=0x00081d:\ ; border outer color
|
||||||
|
bframe=0x0054e7],\ ; border frame color
|
||||||
|
colors inactive = [binner=0x00081d:\ ; border inner color
|
||||||
|
bouter=0x00081d:\ ; border outer color
|
||||||
|
bframe=0x1a8acc],\ ; border frame color
|
||||||
|
dtp = 'myblue.dtp' ; dtp colors
|
||||||
|
|
||||||
|
SKIN_BUTTONS \
|
||||||
|
close = [-21:3][16:16],\ ; buttons coordinates
|
||||||
|
minimize = [-39:3][16:16] ; [left:top][width:height]
|
||||||
|
|
||||||
|
SKIN_BITMAPS \
|
||||||
|
left active = bmp_left,\ ; skin bitmaps pointers
|
||||||
|
left inactive = bmp_left1,\
|
||||||
|
oper active = bmp_oper,\
|
||||||
|
oper inactive = bmp_oper1,\
|
||||||
|
base active = bmp_base,\
|
||||||
|
base inactive = bmp_base1
|
||||||
|
|
||||||
|
BITMAP bmp_left ,'left.bmp' ; skin bitmaps
|
||||||
|
BITMAP bmp_oper ,'oper.bmp'
|
||||||
|
BITMAP bmp_base ,'base.bmp'
|
||||||
|
BITMAP bmp_left1,'left_1.bmp'
|
||||||
|
BITMAP bmp_oper1,'oper_1.bmp'
|
||||||
|
BITMAP bmp_base1,'base_1.bmp'
|
BIN
kernel/trunk/skin/left.bmp
Normal file
BIN
kernel/trunk/skin/left.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 670 B |
BIN
kernel/trunk/skin/left_1.bmp
Normal file
BIN
kernel/trunk/skin/left_1.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 670 B |
235
kernel/trunk/skin/me_skin.inc
Normal file
235
kernel/trunk/skin/me_skin.inc
Normal file
@ -0,0 +1,235 @@
|
|||||||
|
;============================================================================
|
||||||
|
; This file should be used to generate skins of new standard
|
||||||
|
;============================================================================
|
||||||
|
; skin file structure:
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; header:
|
||||||
|
; dd 'SKIN'
|
||||||
|
; dd = version (1 for now)
|
||||||
|
; dd @ params
|
||||||
|
; dd @ buttons
|
||||||
|
; dd @ bitmaps
|
||||||
|
; ...
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; NOTE: order of sections listed below is insignificant
|
||||||
|
; since they're identified by pointer in above header
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ...
|
||||||
|
; params:
|
||||||
|
; dd = skin height
|
||||||
|
; dw = right margin
|
||||||
|
; dw = left margin
|
||||||
|
; dw = bottom margin
|
||||||
|
; dw = top margin
|
||||||
|
; dd = inner line color
|
||||||
|
; dd = outer line color
|
||||||
|
; dd = frame color
|
||||||
|
; dd = dtp file size
|
||||||
|
; ?? = dtp file itself
|
||||||
|
; ...
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ...
|
||||||
|
; buttons:
|
||||||
|
; dd = button type (1 = close, 2 = minimize)
|
||||||
|
; dw = left button coord (could be negative)
|
||||||
|
; dw = top button coord (could be negative)
|
||||||
|
; dw = button width
|
||||||
|
; dw = button height
|
||||||
|
; ... etc for all buttons
|
||||||
|
; dd = 0 (end of buttons list)
|
||||||
|
; ...
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ...
|
||||||
|
; bitmaps:
|
||||||
|
; dw = bitmap kind (1 = left, 2 = oper, 3 = base)
|
||||||
|
; dw = bitmap type (1 = active, 0 = inactive)
|
||||||
|
; dd @ bitmap
|
||||||
|
; ... etc for all bitmaps
|
||||||
|
; dd 0 (end of bitmaps list)
|
||||||
|
; ...
|
||||||
|
;----------------------------------------------------------------------------
|
||||||
|
; ...
|
||||||
|
; bitmap:
|
||||||
|
; dd = bitmap width
|
||||||
|
; dd = bitmap height
|
||||||
|
; ?? = raw bitmap data
|
||||||
|
; ... etc for all bitmaps
|
||||||
|
; ...
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
dd 'SKIN',1,__params__,__buttons__,__bitmaps__
|
||||||
|
|
||||||
|
struc BITMAPFILEHEADER {
|
||||||
|
.bfType dw ? ; WORD
|
||||||
|
.bfSize dd ? ; DWORD
|
||||||
|
.bfReserved1 dw ? ; WORD
|
||||||
|
.bfReserved2 dw ? ; WORD
|
||||||
|
.bfOffBits dd ? ; DWORD
|
||||||
|
}
|
||||||
|
|
||||||
|
struc BITMAPINFOHEADER {
|
||||||
|
.biSize dd ? ; DWORD
|
||||||
|
.biWidth dd ? ; LONG
|
||||||
|
.biHeight dd ? ; LONG
|
||||||
|
.biPlanes dw ? ; WORD
|
||||||
|
.biBitCount dw ? ; WORD
|
||||||
|
.biCompression dd ? ; DWORD
|
||||||
|
.biSizeImage dd ? ; DWORD
|
||||||
|
.biXPelsPerMeter dd ? ; LONG
|
||||||
|
.biYPelsPerMeter dd ? ; LONG
|
||||||
|
.biClrUsed dd ? ; DWORD
|
||||||
|
.biClrImportant dd ? ; DWORD
|
||||||
|
}
|
||||||
|
|
||||||
|
struc _bmp {
|
||||||
|
.h BITMAPFILEHEADER
|
||||||
|
.i BITMAPINFOHEADER
|
||||||
|
}
|
||||||
|
virtual at 0
|
||||||
|
_bmp _bmp
|
||||||
|
end virtual
|
||||||
|
|
||||||
|
macro BITMAP _name*,_fname*
|
||||||
|
{
|
||||||
|
local w,h,a,r,g,b
|
||||||
|
virtual at 0
|
||||||
|
file _fname
|
||||||
|
load w dword from _bmp.i.biWidth
|
||||||
|
load h dword from _bmp.i.biHeight
|
||||||
|
end virtual
|
||||||
|
align 4
|
||||||
|
label _name
|
||||||
|
.width = w
|
||||||
|
.height = h
|
||||||
|
dd w,h
|
||||||
|
a=54+(w*3+(w mod 4))*(h-1)
|
||||||
|
size = $
|
||||||
|
repeat h
|
||||||
|
repeat w
|
||||||
|
virtual at 0
|
||||||
|
file _fname
|
||||||
|
load r from a+0
|
||||||
|
load g from a+1
|
||||||
|
load b from a+2
|
||||||
|
end virtual
|
||||||
|
db r,g,b
|
||||||
|
a=a+3
|
||||||
|
end repeat
|
||||||
|
a=a-w*3*2-(w mod 4)
|
||||||
|
end repeat
|
||||||
|
}
|
||||||
|
|
||||||
|
macro define_colors name,[col,val]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
local a,b,c
|
||||||
|
forward
|
||||||
|
match =binner,col \{ a = val \}
|
||||||
|
match =bouter,col \{ b = val \}
|
||||||
|
match =bframe,col \{ c = val \}
|
||||||
|
common
|
||||||
|
name equ a,b,c
|
||||||
|
}
|
||||||
|
|
||||||
|
macro SKIN_PARAMS [a]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
local _height,_margins,_colors,_colors_1,_dtp,_dtp_sz
|
||||||
|
__params__:
|
||||||
|
forward
|
||||||
|
match qq == ww,a
|
||||||
|
\{
|
||||||
|
match =height,qq \\{ _height = ww \\}
|
||||||
|
match =margins,qq \\{
|
||||||
|
match [q1:q2:q3:q4],ww
|
||||||
|
\\\{
|
||||||
|
_margins equ q3,q1,q4,q2
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
match =colors =active,qq
|
||||||
|
\\{
|
||||||
|
match [q10==q11:q20==q21:q30==q31],ww
|
||||||
|
\\\{
|
||||||
|
define_colors _colors,q10,q11,q20,q21,q30,q31
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
match =colors =inactive,qq
|
||||||
|
\\{
|
||||||
|
match [q10==q11:q20==q21:q30==q31],ww
|
||||||
|
\\\{
|
||||||
|
define_colors _colors_1,q10,q11,q20,q21,q30,q31
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
match =dtp,qq \\{ _dtp equ ww \\}
|
||||||
|
\}
|
||||||
|
common
|
||||||
|
dd _height
|
||||||
|
dw _margins
|
||||||
|
dd _colors,_colors_1
|
||||||
|
virtual at 0
|
||||||
|
file _dtp
|
||||||
|
_dtp_sz = $
|
||||||
|
end virtual
|
||||||
|
dd _dtp_sz
|
||||||
|
file _dtp
|
||||||
|
}
|
||||||
|
|
||||||
|
macro SKIN_BUTTONS [a]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
local btn
|
||||||
|
__buttons__:
|
||||||
|
forward
|
||||||
|
match qq == ww,a
|
||||||
|
\{
|
||||||
|
btn = 0
|
||||||
|
match =close,qq \\{ btn = 1 \\}
|
||||||
|
match =minimize,qq \\{ btn = 2 \\}
|
||||||
|
match [q1:q2][q3:q4],ww
|
||||||
|
\\{
|
||||||
|
if btn <> 0
|
||||||
|
dd btn
|
||||||
|
dw q1,q2,q3,q4
|
||||||
|
end if
|
||||||
|
\\}
|
||||||
|
\}
|
||||||
|
common
|
||||||
|
dd 0
|
||||||
|
}
|
||||||
|
|
||||||
|
macro SKIN_BITMAPS [a]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
local bmp
|
||||||
|
__bitmaps__:
|
||||||
|
forward
|
||||||
|
match qq == ww,a
|
||||||
|
\{
|
||||||
|
bmp=-1
|
||||||
|
match qqq =active,qq \\{ bmp = 1 \\}
|
||||||
|
match qqq =inactive,qq \\{ bmp = 0 \\}
|
||||||
|
match =left qqq,qq
|
||||||
|
\\{
|
||||||
|
if bmp >= 0
|
||||||
|
dw 1,bmp
|
||||||
|
dd ww
|
||||||
|
end if
|
||||||
|
\\}
|
||||||
|
match =oper qqq,qq
|
||||||
|
\\{
|
||||||
|
if bmp >= 0
|
||||||
|
dw 2,bmp
|
||||||
|
dd ww
|
||||||
|
end if
|
||||||
|
\\}
|
||||||
|
match =base qqq,qq
|
||||||
|
\\{
|
||||||
|
if bmp >= 0
|
||||||
|
dw 3,bmp
|
||||||
|
dd ww
|
||||||
|
end if
|
||||||
|
\\}
|
||||||
|
\}
|
||||||
|
common
|
||||||
|
dd 0
|
||||||
|
}
|
BIN
kernel/trunk/skin/myblue.dtp
Normal file
BIN
kernel/trunk/skin/myblue.dtp
Normal file
Binary file not shown.
BIN
kernel/trunk/skin/oper.bmp
Normal file
BIN
kernel/trunk/skin/oper.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
BIN
kernel/trunk/skin/oper_1.bmp
Normal file
BIN
kernel/trunk/skin/oper_1.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
Loading…
Reference in New Issue
Block a user