MENUET 0.66 SYSTEM CALLS FOR APPLICATIONS Created by VT Updated by Medevo eax = function number int 0x40 = sys call 00 = DEFINE WINDOW ebx [x start]*65536 + [x size] ecx [y start]*65536 + [y size] edx body color 0xXYRRGGBB if X=8 -> color glide if Y=0 -> window type I if Y=1 -> reserve area, no draw if Y=2 -> window type II esi grab bar color 0xX0RRGGBB if X=8 -> color glide edi frame color 0x00RRGGBB ret: nothing changed 01 = PUTPIXEL ebx [x] ecx [y] edx pixel color 0x0XRRGGBB ^ 0 normal put, 1 negative ret: nothing changed 02 = GET KEY ret: al 0 successful -> ah = key al 1 no key in buffer 03 = GET SYSTEM CLOCK ret: eax 0x00SSMMHH sec,min,hour 04 = WRITE TEXT TO WINDOW ebx [x start]*65536 + [y start] ecx text color 0x00RRGGBB edx pointer to text beginning esi text length ret: nothing changed 05 = DELAY X/100 SECS ebx delay in 1/100 secs ret: nothing changed 06 = OPEN FILE FROM FLOPPY ebx pointer to filename -> 11 capital letters ecx set 0x00000000 - reserved edx set 0xffffffff - reserved esi read to mem position ret: nothing changed 07 = PUTIMAGE ebx pointer to image in memory ecx image size [x]*65536+[y] edx image position in window [x]*65536+[y] ret: eax 0 succesful, 1 overlapped 08 = DEFINE BUTTON ebx [x start]*65536 + [x size] ecx [y start]*65536 + [y size] edx button id number esi button color 0x 00 RR GG BB ret: nothing changed 09 = PROCESS INFO ebx pointer to 1024 bytes table ecx process number ret: eax number of processes table : dword cpu usage 10 = WAIT FOR EVENT ret: eax event type, 1 window redraw, 2 key in buffer, 3 button pressed 11 = CHECK FOR EVENT, NO WAIT ret: eax 0 no event, 1 window redraw, 2 key in buffer, 3 button pressed 12 = WINDOW REDRAW STATUS ebx 1 start of redraw, 2 end of redraw ret: nothing changed 13 = DRAW BAR ebx [x start]*65536 + [x size] ecx [y start]*65536 + [y size] edx color 0x00RRGGBB ret: nothing changed 14 = GET SCREEN MAX ret: eax [x max]*65536 + [y max] 15 = BACKGROUND ebx 1 - set background size ecx x size edx y size ebx 2 - write to background memory - max (0x100000-16) ecx position in memory in bytes edx color 0x00RRGGBB ebx 3 - draw background ebx 4 - type of background draw ecx 1 - tile ecx 2 - stretch 16 = [ not ready - write cache to diskette ] 17 = GET PRESSED BUTTON ID ret: al 0 successful -> ah = id number al 1 no key in buffer 18 = SYSTEM SERVICE ebx 1 - system boot ebx 2 - force terminate , ecx process no ebx 4 - idle clock cycles / second ebx 5 - time stamp counter / second - cpu speed 19 = START PROGRAM ebx point to 11 char filename ecx 0, or point to ASCIIZ start parameters - max 256 bytes ret: eax 0 successful eax other error code 20 = MIDI INTERFACE - MPU401 ebx 1 - reset device ebx 2 - cl midi data to output 21 = SETUP FOR DEVICES ebx 1=roland mpu midi base , base io address ebx 2=keyboard 1 base keymap 2 shift keymap (ecx pointer to keymap) 9 country 1eng 2fi 3ger 4rus ebx 3=cd base 1 pri.master 2 pri slave, 3 sec master 4 sec slave ebx 4=sb16 base, base io address ebx 5=system language, 1eng 2fi 3ger 4rus ebx 6=wss base, base io address ebx 7=hd base, 1 pri.master 2 pri slave 3 sec master 4 sec slave ebx 8=fat32 partition in hd 22 = NEW WINDOW TYPE ebx [x start]*65536 + [x size] ecx [y start]*65536 + [y size] edx body color 0x00RRGGBB esi grab bar color 0x00RRGGBB (+0x80000000 = color glide) edi frame color 0x00RRGGBB ret: nothing changed 23 = WAIT FOR EVENT WITH TIMEOUT ebx time to delay in hs ret: eax event type: 0 no event, 1 window redraw, 2 key in buffer, 3 button 24 = CD AUDIO ebx 1 - play from ecx 00 FR SS MM ebx 2 - get playlist size of ecx to [edx] ebx 3 - stop/pause play 25 = SB16 - mixer I ebx 1 - set main volume cl [L]*16+[R] ebx 2 - set cd volume cl [L]*16+[R] 26 = GET SETUP FOR DEVICES ebx 1=roland mpu midi base , base io address ebx 2=keyboard 1 base keymap 2 shift keymap 9 country 1eng 2fi 3ger 4rus ebx 3=cd base 1 pri.master 2 pri slave, 3 sec master 4 sec slave ebx 4=sb16 base, base io address ebx 5=system language, 1eng 2fi 3ger 4rus ebx 6=wss base, base io address ebx 7=hd base, 1 pri.master 2 pri slave 3 sec master 4 sec slave ebx 8=fat32 partition in hd ebx 9=1/100 timer tics from stard -> eax return value in eax 27 = WINDOWS SOUND SYSTEM ebx 1 - set main volume to cl 0-255 ebx 2 - set cd volume to cl 0-255 28 = SB16 - mixer II ebx 1 - set main volume to cl 0-255 ebx 2 - set cd volume to cl 0-255 29 = GET DATE ret: eax 0x00YYDDMM year date month 30 = READ HD ebx pointer to file ecx file lenght edx block to read, starts from 1, blocksize = 512 bytes esi reserved, set as 1 edi pointer to return/work area (atleast 20 000 bytes) return: work_area+1024 <- requested block of 512 bytes 31 = START APP FROM HD ebx pointer to file ecx file lenght edx pointer to return/work area (atleast 20 000 bytes) ret eax=0 successful, eax<>0 errorcode 32 = DELETE FILE FROM FLOPPY IMAGE IN MEMORY ebx pointer to filename 33 = SAVE FILE TO FLOPPY IMAGE IN MEMORY ebx pointer to file name ecx pointer to data edx count to write in bytes esi 0 create new , ( 1 append - not implemented yet ) 34 = READ DIRECTORY FROM FLOPPY 35 = READ SCREEN PIXEL 36 = READ STRING (not finished) 37 = READ MOUSE POSITION ebx=0 screen relative ebx=1 window relative ebx=2 buttons pressed return in eax 38 = DRAW LINE 39 = GET BACKGROUND ebx=1 -> eax=[bgr x size] shl 16 + [bgr y size] ebx=2 ecx= postition of backgrounds memorymap to return in eax ebx=4 -> eax=1 tiled, eax=2 stretched 40 = SET BITFIELD FOR WANTED EVENTS as default: ebx = 00000000 00000000 00000000 00000111b events: I window draw I key in buffer I button in buffer I (end request) I desktop background draw I (mouse change) I---------------I get irqs data 41 = GET IRQ OWNER 42 = GET DATA READ BY IRQ ebx irq number ret eax number of bytes in buffer bl data 43 = SEND DATA TO DEVICE bx port cl data ret eax 0 if successful, other error 44 = PROGRAM IRQ's ebx pointer to table ecx irq number 45 = RESERVE/FREE IRQ ebx 0 reserve 1 free ecx IRQ number ret eax 0 successful, 1 error 46 = RESERVE/FREE PORT AREA ebx 0 reserve 1 free ecx port area start edx port area end ret eax 0 successful, 1 error 47 = DISPLAY NUMBER TO WINDOW ebx = print type, bl=0 -> ecx is number bl=1 -> ecx is pointer bh=0 -> display decimal bh=1 -> display hexadecimal bh=2 -> display binary bits 16-21 = number of digits to display (0-32) bits 22-31 = reserved ecx = number or pointer edx = x shl 16 + y esi = color // ??!!?? 48 = SetRedrawType and SetButtonType ebx = Setting to Change, 0 -> DISPLAY redraw 1 -> BUTTON type ecx = 0 flat buttons ecx = 1 3D Buttons ???49 = AppInts / define apps interrupt handlers ??? 50 = Shape Draw Code / very ugly to code - look at circle.asm for use ebx = 0 -> shape reference area ecx = shape reference 32x32 db 1 -> shape scale ecx = scale of shape (2 = 1:1 which makes it 128 x 128 pix's big) 51 = CreateThreads ebx = 1 create thread ecx = thread start (such as a pointer to a sub function in a program, that will start seperatly) edx=thread stack value (for the threads own stack) 0xc0000000 = SB16_load_music 0xc0000001 = SB16_play_music -1 = END OF APPLICATION end of funcs -VT