📄 rdos.s
字号:
# Parameters.: SrcHandle# DestHandle# width, height# SrcX, SrcY# DestX, DestY###########################################################################*/ .global RdosBlit RdosBlit: pushl %ebp movl %esp,%ebp pushl %eax pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi; movw 8(%ebp),%ax movw 12(%ebp),%bx movw 16(%ebp),%cx movw 20(%ebp),%dx movw 28(%ebp),%si shll $16,%esi movw 24(%ebp),%si movw 36(%ebp),%di shll $16,%edi movw 32(%ebp),%di UserGate blit_nr popl %edi popl %esi popl %edx popl %ecx popl %ebx popl %eax leave ret /*############################################################################ Name : RdosDrawMask## Purpose....: Draw mask## Parameters.: Bitmap handle# mask# RowSize# width, height# SrcX, SrcY# DestX, DestY###########################################################################*/ .global RdosDrawMask RdosDrawMask: pushl %ebp movl %esp,%ebp pushl %eax pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi; movw 8(%ebp),%bx movl 12(%ebp),%edi movw 16(%ebp),%ax movw 24(%ebp),%si shll $16,%esi movw 20(%ebp),%si movw 32(%ebp),%cx shll $16,%ecx movw 28(%ebp),%cx movw 40(%ebp),%dx shll $16,%edx movw 36(%ebp),%dx UserGate draw_mask_nr popl %edi popl %esi popl %edx popl %ecx popl %ebx popl %eax leave ret /*############################################################################ Name : RdosDrawLine## Purpose....: Draw a line## Parameters.: Bitmap handle# x1, y1# x2, y2###########################################################################*/ .global RdosDrawLine RdosDrawLine: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi; movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx movw 20(%ebp),%si movw 24(%ebp),%di UserGate draw_line_nr popl %edi popl %esi popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosDrawString## Purpose....: Draw a string## Parameters.: Bitmap handle# x, y# string###########################################################################*/ .global RdosDrawString RdosDrawString: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx pushl %edi; movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx movl 20(%ebp),%edi UserGate draw_string_nr popl %edi popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosDrawRect## Purpose....: Draw a rect## Parameters.: Bitmap handle# x, y# width, height###########################################################################*/ .global RdosDrawRect RdosDrawRect: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx movw 20(%ebp),%si movw 24(%ebp),%di UserGate draw_rect_nr popl %edi popl %esi popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosDrawEllipse## Purpose....: Draw an ellipse## Parameters.: Bitmap handle# x, y# width, height###########################################################################*/ .global RdosDrawEllipse RdosDrawEllipse: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx movw 20(%ebp),%si movw 24(%ebp),%di UserGate draw_ellipse_nr popl %edi popl %esi popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosCreateBitmap## Purpose....: Create a bitmap## Parameters.: BitsPerPixel# width, height## Returns....: Bitmap handle###########################################################################*/ .global RdosCreateBitmap RdosCreateBitmap: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx movw 8(%ebp),%ax movw 12(%ebp),%cx movw 16(%ebp),%dx UserGate create_bitmap_nr movzx %bx,%eax; popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosDuplicateBitmapHandle## Purpose....: Duplicate bitmap handle for use in another thread / object## Parameters.: Bitmap handle## Returns....: Bitmap handle###########################################################################*/ .global RdosDuplicateBitmapHandle RdosDuplicateBitmapHandle: pushl %ebp movl %esp,%ebp pushl %ebx movw 8(%ebp),%bx UserGate dup_bitmap_handle_nr movzx %bx,%eax popl %ebx leave ret /*############################################################################ Name : RdosCloseBitmap## Purpose....: Close bitmap handle## Parameters.: Bitmap handle###########################################################################*/ .global RdosCloseBitmap RdosCloseBitmap: pushl %ebp movl %esp,%ebp pushl %ebx movw 8(%ebp),%bx UserGate close_bitmap_nr popl %ebx leave ret /*############################################################################ Name : RdosCreateStringBitmap## Purpose....: Create bitmap from string & font## Parameters.: Font# string## Returns....: Bitmap handle###########################################################################*/ .global RdosCreateStringBitmap RdosCreateStringBitmap: pushl %ebp movl %esp,%ebp pushl %ebx pushl %edi movw 8(%ebp),%bx movl 12(%ebp),%edi UserGate create_string_bitmap_nr movzx %bx,%eax; popl %edi popl %ebx leave ret /*############################################################################ Name : RdosGetBitmapInfo## Purpose....: Get info about bitmap## Parameters.: Bitmap handle# &BitsPerPixel# &width, &height# &linesize# &LFB###########################################################################*/ .global RdosGetBitmapInfo RdosGetBitmapInfo: pushl %ebp movl %esp,%ebp pushl %eax pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi movw 8(%ebp),%bx UserGate get_bitmap_info_nr jc gbiFail pushl %edi movl 12(%ebp),%edi movzx %al,%eax movl %eax,(%edi) movl 16(%ebp),%edi movzx %cx,%ecx movl %ecx,(%edi) movl 20(%ebp),%edi movzx %dx,%edx movl %edx,(%edi) movl 24(%ebp),%edi movzx %si,%esi movl %esi,(%edi) popl %edi movl 28(%ebp),%eax movl %edi,(%eax) jmp gbiDonegbiFail: xorl %eax,%eax movl 12(%ebp),%edi movl %eax,(%edi) movl 16(%ebp),%edi movl %eax,(%edi) movl 20(%ebp),%edi movl %eax,(%edi) movl 24(%ebp),%edi movl %eax,(%edi) movl 28(%ebp),%edi movl %eax,(%edi)gbiDone: popl %edi popl %esi popl %edx popl %ecx popl %ebx popl %eax leave ret /*############################################################################ Name : RdosCreateSprite## Purpose....: Create a sprite## Parameters.: dest# bitmap# mask# LGOP## Returns....: Sprite handle###########################################################################*/ .global RdosCreateSprite RdosCreateSprite: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx movw 20(%ebp),%ax UserGate create_sprite_nr movzx %bx,%eax popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosCloseSprite## Purpose....: Close sprite handle## Parameters.: Sprite handle###########################################################################*/ .global RdosCloseSprite RdosCloseSprite: pushl %ebp movl %esp,%ebp pushl %ebx movw 8(%ebp),%bx UserGate close_sprite_nr popl %ebx leave ret /*############################################################################ Name : RdosShowSprite## Purpose....: Show sprite## Parameters.: Sprite handle###########################################################################*/ .global RdosShowSprite RdosShowSprite: pushl %ebp movl %esp,%ebp pushl %ebx movw 8(%ebp),%bx UserGate show_sprite_nr popl %ebx leave ret /*############################################################################ Name : RdosHideSprite## Purpose....: Hide sprite## Parameters.: Sprite handle###########################################################################*/ .global RdosHideSprite RdosHideSprite: pushl %ebp movl %esp,%ebp pushl %ebx movw 8(%ebp),%bx UserGate hide_sprite_nr popl %ebx leave ret /*############################################################################ Name : RdosMoveSprite## Purpose....: Move sprite## Parameters.: Sprite handle# x, y###########################################################################*/ .global RdosMoveSprite RdosMoveSprite: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx movw 8(%ebp),%bx movw 12(%ebp),%cx movw 16(%ebp),%dx UserGate move_sprite_nr popl %edx popl %ecx popl %ebx leave ret /*############################################################################ Name : RdosSetForeColor## Purpose....: Set text-mode fore color## Parameters.: palette index###########################################################################*/ .global RdosSetForeColor RdosSetForeColor: pushl %ebp movl %esp,%ebp pushl %eax movb 8(%ebp),%al UserGate set_forecolor_nr popl %eax leave ret /*############################################################################ Name : RdosSetBackColor## Purpose....: Set text-mode back color## Parameters.: palette index###########################################################################*/ .global RdosSetBackColor RdosSetBackColor: pushl %ebp movl %esp,%ebp pushl %eax movb 8(%ebp),%al UserGate set_backcolor_nr popl %eax leave ret /*############################################################################ Name : RdosGetSysTime## Purpose....: Get system time## Parameters.: &year, &month, &day# &hour, &min, &sec, &ms###########################################################################*/ .global RdosGetSysTime RdosGetSysTime: pushl %ebp movl %esp,%ebp pushal UserGate get_system_time_nr pushl %eax UserGate binary_to_time_nr pushl %edx movl 8(%ebp),%esi movzx %dx,%edx movl %edx,(%esi) movl 12(%ebp),%esi movzx %ch,%edx movl %edx,(%esi) movl 16(%ebp),%esi movzx %cl,%edx movl %edx,(%esi) movl 20(%ebp),%esi movzx %bh,%edx movl %edx,(%esi) movl 24(%ebp),%esi movzx %bl,%edx movl %edx,(%esi) movl 28(%ebp),%esi movzx %ah,%edx movl %edx,(%esi) popl %edx UserGate time_to_binary_nr movl %eax,%ebx popl %eax subl %ebx,%eax xorl %edx,%edx movl $1192,%ebx divl %ebx movl 32(%ebp),%esi movzx %ax,%eax movl %eax,(%esi) popal leave ret /*############################################################################ Name : RdosGetTime## Purpose....: Get time## Parameters.: &year, &month, &day# &hour, &min, &sec, &ms###########################################################################*/ .global RdosGetTime RdosGetTime: pushl %ebp movl %esp,%ebp pushal UserGate get_time_nr pushl %eax UserGate binary_to_time_nr pushl %edx movl 8(%ebp),%esi movzx %dx,%edx movl %edx,(%esi) movl 12(%ebp),%esi movzx %ch,%edx movl %edx,(%esi) movl 16(%ebp),%esi movzx %cl,%edx movl %edx,(%esi) movl 20(%ebp),%esi movzx %bh,%edx movl %edx,(%esi) movl 24(%ebp),%esi movzx %bl,%edx movl %edx,(%esi) movl 28(%ebp),%esi movzx %ah,%edx movl %edx,(%esi) popl %edx UserGate time_to_binary_nr movl %eax,%ebx popl %eax subl %ebx,%eax xorl %edx,%edx movl $1192,%ebx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -