X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;ds=sidebyside;f=uefi.f;h=3e17fc3a831fda3e0b0aeeb4cbd2755a4d7431c3;hb=61b721d365efaaae4d5ebb8d13972faa697be54b;hp=91ea453b8f2fab82b970125f28902ee7ed4840c5;hpb=fe5967a09f12cc09640d8284ac6f554ee3bf4357;p=rrq%2Fjonasforth.git diff --git a/uefi.f b/uefi.f index 91ea453..3e17fc3 100644 --- a/uefi.f +++ b/uefi.f @@ -4,15 +4,21 @@ : BootServices SystemTable 96 + @ ; : BootServices.LocateProtocol BootServices 320 + @ ; -: BootServices.LocateProtocol(GOP) +: GraphicsOutputProtocol + \ [TODO] It would be nice to cache this value, so we don't have to get it + \ every time. HERE @ 5348063987722529246 , 7661046075708078998 , \ *Protocol = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID 0 \ *Registration HERE @ 0 , \ **Interface BootServices.LocateProtocol EFICALL3 DROP HERE @ 8 - @ \ *Interface ; -: GOP.Blt BootServices.LocateProtocol(GOP) 16 + @ ; -: GOP.SetMode BootServices.LocateProtocol(GOP) 8 + @ ; +: GOP.Blt GraphicsOutputProtocol 16 + @ ; +: GOP.Blt() ( GOP buffer mode sx sy dx dy dw dh pitch -- ) + GOP.Blt EFICALL10 0 = IF ELSE S" Warning: Invalid Blt()" TELL THEN ; +: GOP.SetMode GraphicsOutputProtocol 8 + @ ; + +: EfiBltVideoFill 0 ; \ Store a null-terminated UTF-16 string HERE, and return a pointer to its buffer \ at runtime. @@ -25,16 +31,3 @@ HERE @ 2 - HERE ! \ Remove final " 0 C, 0 C, \ Null terminator ; - - BootServices.LocateProtocol(GOP) \ *This - HERE @ 255 C, 0 C, 0 C, 0 C, \ *BltBuffer = single blue pixel - 0 \ BltOperation = EfiBltVideoFill - 0 \ SourceX - 0 \ SourceY - 100 \ DestinationX - 200 \ DestinationY - 400 \ Width - 20 \ Height - 0 \ Delta (unused) -GOP.Blt EFICALL10 -.U NEWLINE