/programs/network/netsurf/dependencies/lib/libcss.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libcurl.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libdom.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libhubbub.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libnsbmp.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libnsfb.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libnsgif.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libparserutils.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/dependencies/lib/libwapcaplet.a |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/libdom/bindings/hubbub/Makefile |
---|
4,5 → 4,5 |
OUTFILE = libo.o |
CFLAGS += -I ../../include/ -I ../../include/dom/ -I ../../ -I ../ -I ./ -I /home/sourcerer/kos_src/newenginek/kolibri/include |
CFLAGS += -I ./ -I ../../include/ -I ../../src/ -I ../../../libhubbub/include/ -I ../../../libwapcaplet/include/ |
include $(MENUETDEV)/makefiles/Makefile_for_o_lib |
/programs/network/netsurf/libdom/bindings/hubbub/parser.c |
---|
16,11 → 16,14 |
#include <dom/dom.h> |
#include "errors.h" |
//#include "errors.h" |
#include "parser.h" |
#include "utils.h" |
#include "core/document.h" |
#include "core/string.h" |
#include "core/node.h" |
472,15 → 475,15 |
static hubbub_error form_associate(void *parser, void *form, void *node) |
{ |
/* |
dom_hubbub_parser *dom_parser = (dom_hubbub_parser *) parser; |
dom_html_form_element *form_ele = form; |
dom_node_internal *ele = node; |
dom_html_document *doc = (dom_html_document *)ele->owner; |
dom_exception err = DOM_NO_ERR;*/ |
dom_exception err = DOM_NO_ERR; |
/* Determine the kind of the node we have here. */ |
/*if (dom_string_caseless_isequal(ele->name, |
if (dom_string_caseless_isequal(ele->name, |
doc->memoised[hds_BUTTON])) { |
err = _dom_html_button_element_set_form( |
(dom_html_button_element *)node, form_ele); |
516,7 → 519,7 |
"Error in form_associate"); |
return HUBBUB_UNKNOWN; |
} |
}*/ |
} |
return HUBBUB_OK; |
} |
/programs/network/netsurf/libnsfb/src/surface/Makefile |
---|
1,7 → 1,6 |
# Sources |
OBJS := surface.o able.o ram.o linux.o sdl.o |
OBJS := surface.o able.o ram.o linux.o sdl.o kolibri.o |
OUTFILE = sup.o |
CFLAGS += -I ../../include/ -I ../../ -I ../ -I ./ -I /home/sourcerer/kos_src/newenginek/kolibri/include |
/programs/network/netsurf/libnsfb/src/surface/kolibri.c |
---|
40,6 → 40,29 |
} |
unsigned kol_mouse_posw() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(37), "b"(1)); |
return error; |
} |
unsigned kol_mouse_btn() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(37), "b"(2)); |
return error; |
} |
unsigned kol_scancodes() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(66), "b"(1), "c"(1)); |
return error; |
} |
void kolibri_redraw(nsfb_t *nsfb){ |
47,16 → 70,35 |
} |
unsigned kol_skin_h() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(48), "b"(4)); |
return error; |
} |
unsigned kol_area(char *data) |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(9), "b"(data), "c"(0xffffffff)); |
return error; |
} |
void kolibri_window_redraw(nsfb_t *nsfb){ |
__menuet__window_redraw(1); |
__menuet__define_window(100,100,nsfb->width,nsfb->height,0x43000080,0x800000FF,0x000080); |
__menuet__write_text(3,3,0xFFFFFF,"Netsurf",7); |
__menuet__debug_out("f65 is mighty!\n"); |
__menuet__define_window(100,100,nsfb->width+9,nsfb->height+kol_skin_h(),0x34000080,0x800000FF,"Netsurf"); |
//__menuet__write_text(3,3,0xFFFFFF,"Netsurf",7); |
//__menuet__debug_out("f65 is mighty!\n"); |
//here put image pixels! it's 32bpp |
f65(0,0, nsfb->width, nsfb->height, pixels); |
__menuet__window_redraw(2); |
} |
84,9 → 126,9 |
tw = dstbox->x1 - dstbox->x0; |
th = dstbox->y1 - dstbox->y0; |
char pst[255]; |
sprintf (pst, "Src %d,%d %dx%d Dst %d,%d %dx%d \n", x,y,w,h,tx,ty,tw,th); |
__menuet__debug_out(pst); |
// char pst[255]; |
// sprintf (pst, "Src %d,%d %dx%d Dst %d,%d %dx%d \n", x,y,w,h,tx,ty,tw,th); |
// __menuet__debug_out(pst); |
int px, py, pp; |
135,6 → 177,8 |
{ |
enum nsfb_format_e fmt; |
kol_scancodes(); |
pz=0; |
pb=0; |
187,30 → 231,110 |
} |
unsigned kol_mouse_posw() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(37), "b"(1)); |
return error; |
int isup(int scan){ |
return (scan&0x80)>>7; |
} |
int scan2key(int scan){ |
int keycode=(scan&0x0FF7F); |
/* MAIN KB - NUMS */ |
if (keycode == 0x02) return NSFB_KEY_1; |
if (keycode == 0x03) return NSFB_KEY_2; |
if (keycode == 0x04) return NSFB_KEY_3; |
if (keycode == 0x05) return NSFB_KEY_4; |
if (keycode == 0x06) return NSFB_KEY_5; |
if (keycode == 0x07) return NSFB_KEY_6; |
if (keycode == 0x08) return NSFB_KEY_7; |
if (keycode == 0x09) return NSFB_KEY_8; |
if (keycode == 0x0A) return NSFB_KEY_9; |
if (keycode == 0x0B) return NSFB_KEY_0; |
unsigned kol_mouse_btn() |
{ |
unsigned error; |
asm volatile ("int $0x40":"=a"(error):"a"(37), "b"(2)); |
return error; |
if (keycode == 0x10) return NSFB_KEY_q; |
if (keycode == 0x11) return NSFB_KEY_w; |
if (keycode == 0x12) return NSFB_KEY_e; |
if (keycode == 0x13) return NSFB_KEY_r; |
if (keycode == 0x14) return NSFB_KEY_t; |
if (keycode == 0x15) return NSFB_KEY_y; |
if (keycode == 0x16) return NSFB_KEY_u; |
if (keycode == 0x17) return NSFB_KEY_i; |
if (keycode == 0x18) return NSFB_KEY_o; |
if (keycode == 0x19) return NSFB_KEY_p; |
if (keycode == 0x1A) return NSFB_KEY_LEFTBRACKET; |
if (keycode == 0x1B) return NSFB_KEY_RIGHTBRACKET; |
if (keycode == 0x1E) return NSFB_KEY_a; |
if (keycode == 0x1F) return NSFB_KEY_s; |
if (keycode == 0x20) return NSFB_KEY_d; |
if (keycode == 0x21) return NSFB_KEY_f; |
if (keycode == 0x22) return NSFB_KEY_g; |
if (keycode == 0x23) return NSFB_KEY_h; |
if (keycode == 0x24) return NSFB_KEY_j; |
if (keycode == 0x25) return NSFB_KEY_k; |
if (keycode == 0x26) return NSFB_KEY_l; |
if (keycode == 0x2C) return NSFB_KEY_z; |
if (keycode == 0x2D) return NSFB_KEY_x; |
if (keycode == 0x2E) return NSFB_KEY_c; |
if (keycode == 0x2F) return NSFB_KEY_v; |
if (keycode == 0x30) return NSFB_KEY_b; |
if (keycode == 0x31) return NSFB_KEY_n; |
if (keycode == 0x32) return NSFB_KEY_m; |
if (keycode == 0x27) return NSFB_KEY_SEMICOLON; |
if (keycode == 0x28) return NSFB_KEY_QUOTEDBL; |
if (keycode == 0x2B) return NSFB_KEY_BACKSLASH; |
if (keycode == 0x33) return NSFB_KEY_COMMA; |
if (keycode == 0x34) return NSFB_KEY_PERIOD; |
if (keycode == 0x35) return NSFB_KEY_SLASH; |
if (keycode == 0x0C) return NSFB_KEY_MINUS; |
if (keycode == 0x0D) return NSFB_KEY_EQUALS; |
if (keycode == 0x0E) return NSFB_KEY_BACKSPACE; |
if (keycode == 0xE053) return NSFB_KEY_DELETE; |
if (keycode == 0x2A) return NSFB_KEY_LSHIFT; |
if (keycode == 0x36) return NSFB_KEY_RSHIFT; |
if (keycode == 0x1C) return NSFB_KEY_RETURN; |
if (keycode == 0xE04B) return NSFB_KEY_LEFT; |
if (keycode == 0xE04D) return NSFB_KEY_RIGHT; |
if (keycode == 0xE048) return NSFB_KEY_UP; |
if (keycode == 0xE050) return NSFB_KEY_DOWN; |
if (keycode == 0x3F) return NSFB_KEY_F5; |
if (keycode == 0x39) return NSFB_KEY_SPACE; |
if (keycode == 0x01) return NSFB_KEY_ESCAPE; |
if (keycode == 0x38) return NSFB_KEY_LALT; |
if (keycode == 0x1D) return NSFB_KEY_LCTRL; |
if (keycode == 0xE038) return NSFB_KEY_RALT; |
if (keycode == 0xE01D) return NSFB_KEY_RCTRL; |
if (keycode == 0xE047) return NSFB_KEY_HOME; |
if (keycode == 0xE04F) return NSFB_KEY_END; |
if (keycode == 0xE049) return NSFB_KEY_PAGEUP; |
if (keycode == 0xE051) return NSFB_KEY_PAGEDOWN; |
return NSFB_KEY_UNKNOWN; |
} |
int ispowerkey(int scan){ |
return (scan&0xE000)>>15; |
} |
static bool kolibri_input(nsfb_t *nsfb, nsfb_event_t *event, int timeout) |
{ |
int got_event; |
static int scanfull=0; |
nsfb = nsfb; /* unused */ |
got_event = __menuet__check_for_event(); |
if (got_event == 0) { |
225,11 → 349,41 |
} |
if (got_event==2) { //key pressed |
event->type = NSFB_EVENT_KEY_UP; |
event->value.keycode = __menuet__getkey(); |
int scanz = __menuet__getkey(); |
//char dbs[64]; |
//__menuet__debug_out("KEY PRESSED\n"); |
// sprintf (dbs, "FULLKEY BEFORE: F:%x\n", scanfull); |
//__menuet__debug_out(dbs); |
if (scanz==0xE0) { |
scanfull=0xE000; |
return true; |
} else { |
scanfull=scanfull+scanz; |
} |
//sprintf (dbs, "FULLKEY AFTER: F:%x\n", scanfull); |
//__menuet__debug_out(dbs); |
if (isup(scanfull)==1) { |
event->type = NSFB_EVENT_KEY_UP;} else { |
event->type = NSFB_EVENT_KEY_DOWN;} |
event->value.keycode = scan2key(scanfull); |
//sprintf (dbs, "KEY: %x F:%x %d %d\n", scanz, scanfull, isup(scanz), scan2key(scanz)); |
//__menuet__debug_out(dbs); |
scanfull=0; |
return true; |
} |
if (got_event==3) { //key pressed |
if (__menuet__get_button_id()==1) kolibri_finalise(nsfb); |
return true; |
/programs/network/netsurf/netsurf/content/fetchers/curl.c |
---|
28,6 → 28,9 |
* ::max_cached_fetch_handles in this ring. |
*/ |
#include "http.c" |
#include <assert.h> |
#include <errno.h> |
#include <inttypes.h> |
155,7 → 158,6 |
bool fetch_curl_initialise(lwc_string *scheme) |
{ |
LOG(("curl initi lwc\n")); |
return true; /* Always succeeds */ |
} |
363,71 → 365,77 |
return error; |
} |
static void fetch_curl_process(struct fetch_curl_context *ctx) { |
char ps[96], str[128]; |
sprintf(ps, "Yay! Path is %s", ctx->path); |
execl ("/sys/@notify", ps, 0); |
int pid=execl ("/sys/network/downloader", ctx->path, 0); |
fetch_msg msg; |
/* ERSATZ DOWNLOADER */ |
/* |
char zapzap[]="<html><body><h1>HOOLE!</h1></body></html>"; |
size_t file_size=strlen(zapzap); |
char *buffer = (char*)malloc(file_size * sizeof(char)); |
memcpy(buffer, zapzap, file_size * sizeof(char)); |
*/ |
// while (is_pid(pid)) { |
kill_pid(pid); |
// } |
pid=execl ("/sys/network/downloader", ctx->path, 0); |
char ps[255]; |
sprintf(ps, "pid %d", pid); |
execl ("/sys/network/@notify", ps, 0); |
while (is_pid(pid)); |
__menuet__debug_out("AHOY!\n"); |
struct http_msg *http_ahoy; |
unsigned int wererat = 0; |
char * pa=ctx->path; |
asm volatile ("pusha"); |
wererat = http_get(pa); |
asm volatile ("popa"); |
__menuet__debug_out("HTTP GOT!\n"); |
int result; |
sprintf(ps, "Yay! Finished"); |
execl ("/sys/network/@notify", ps, 0); |
http_ahoy=wererat; |
sprintf (str, "Header %d bytes, content %d bytes, recieved %d bytes\n", http_ahoy->header_length, http_ahoy->content_length, http_ahoy->content_received); |
__menuet__debug_out(str); |
/* |
char pzz[255]; |
sprintf(pzz, "Pid is %d", pid); |
execl ("/sys/@notify", pzz, 0); */ |
//int status; |
//waitpid(pid, &status, 0); |
asm volatile ("pusha"); |
result = http_process(wererat); |
asm volatile ("popa"); |
while (result == -1) { |
asm volatile ("pusha"); |
result = http_process(wererat); |
asm volatile ("popa"); |
} |
http_ahoy=wererat; |
fetch_msg msg; |
//const char * buf = "<html><body><h1>Hello, file fetcher!</h1></body></html>"; |
sprintf (str, "Header %d bytes, content %d bytes, recieved %d bytes\n", http_ahoy->header_length, http_ahoy->content_length, http_ahoy->content_received); |
__menuet__debug_out(str); |
FILE *infile; |
infile = fopen("/sys/.download", "rb"); |
if (infile == NULL) { |
printf("file does not exist.\n"); |
return -1; |
} |
__menuet__debug_out("All content is here\n"); |
fseek(infile, 0, SEEK_END); |
size_t file_size = ftell(infile); |
rewind(infile); |
size_t file_size=http_ahoy->content_received; |
char *buffer = (char*)malloc(file_size * sizeof(char)); |
if (buffer == NULL) { |
fclose(infile); |
printf("Error allocating %d bytes.\n", file_size * sizeof(char)); |
return -1; |
} |
size_t bytes_read = fread(buffer, sizeof(char), file_size, infile); |
if (bytes_read != file_size) { |
printf("Have read only %d bytes of %d.\n", bytes_read, file_size); |
free(buffer); |
fclose(infile); |
return -1; |
} |
fclose(infile); |
memcpy(buffer, &(http_ahoy->data)+http_ahoy->header_length, file_size); |
// http_free(wererat); |
__menuet__debug_out("memcopied\n==\n"); |
//__menuet__debug_out(buffer); |
//__menuet__debug_out("memcopied\n==\n"); |
//char zapzap[]="<html><body><h1>HOOLE!</h1></body></html>"; |
//file_size=strlen(zapzap); |
//char *buffer = (char*)malloc(file_size * sizeof(char)); |
//memcpy(buffer, zapzap, file_size * sizeof(char)); |
/* fetch is going to be successful */ |
fetch_set_http_code(ctx->fetchh, 200); |
436,8 → 444,6 |
* fetch_file_send_callback(). |
*/ |
__menuet__debug_out(fetch_filetype(ctx->path)); |
__menuet__debug_out("\n"); |
if (fetch_curl_send_header(ctx, "Content-Type: %s", |
fetch_filetype(ctx->path))) |
447,7 → 453,7 |
/* main data loop */ |
msg.type = FETCH_DATA; |
msg.data.header_or_data.buf = (const uint8_t *) buffer; |
msg.data.header_or_data.buf = (const uint8_t *) buffer;//&(http_ahoy->data) ; //buffer; |
msg.data.header_or_data.len = file_size; |
fetch_curl_send_callback(&msg, ctx); |
/programs/network/netsurf/netsurf/content/fetchers/http.c |
---|
0,0 → 1,86 |
#include <menuet/os.h> |
#define NULL 0 |
#define __stdcall __attribute__((stdcall)) |
extern int dll_load(); |
extern int mem_Free(); |
extern int mem_Alloc(); |
extern int mem_ReAlloc(); |
int kol_exit(){ |
__menuet__sys_exit(); |
} |
struct http_msg { |
unsigned int socket; |
unsigned int flags; |
unsigned int write_ptr; |
unsigned int buffer_length; |
unsigned int chunk_ptr; |
unsigned int timestamp; |
unsigned int status; |
unsigned int header_length; |
unsigned int content_length; |
unsigned int content_received; |
char data; //unknown size |
}; |
int (* __stdcall http_init)(); |
unsigned int (* __stdcall http_get) (char * url); //yay, it's NOT uint, but hey, C is stubborn, and I'm dumb |
int (* __stdcall http_process) (unsigned int identifier); |
void (* __stdcall http_free) (unsigned int identifier); |
int HTTP_YAY(){ |
asm volatile ("pusha\n\ |
movl $mem_Alloc, %eax\n\ |
movl $mem_Free, %ebx\n\ |
movl $mem_ReAlloc, %ecx\n\ |
movl $dll_load, %edx\n\ |
movl http_init, %esi\n\ |
call *%esi\n\ |
popa"); |
} |
///=========================== |
void HTTP_INIT() |
{ |
IMP_ENTRY *imp; |
imp = __kolibri__cofflib_load("/sys/lib/http.obj"); |
if (imp == NULL) |
kol_exit(); |
http_init = ( __stdcall int(*)()) |
__kolibri__cofflib_getproc (imp, "lib_init"); |
if (http_init == NULL) |
kol_exit(); |
http_get = ( __stdcall unsigned int (*)(char*)) |
__kolibri__cofflib_getproc (imp, "get"); |
if (http_get == NULL) |
kol_exit(); |
http_free = ( __stdcall void (*)(unsigned int)) |
__kolibri__cofflib_getproc (imp, "free"); |
if (http_free == NULL) |
kol_exit(); |
http_process = ( __stdcall int (*)(unsigned int)) |
__kolibri__cofflib_getproc (imp, "process"); |
if (http_process == NULL) |
kol_exit(); |
__menuet__debug_out("HTTP init...\n"); |
HTTP_YAY(); |
__menuet__debug_out("ok...\n"); |
} |
/programs/network/netsurf/netsurf/framebuffer/gui.c |
---|
435,7 → 435,7 |
fewidth = nsoption_int(window_width); |
feheight = nsoption_int(window_height); |
} else { |
fewidth = 800; //640; |
fewidth = 790; //640; |
feheight = 560; //400; |
} |
541,6 → 541,25 |
freopen( "stdout.log", "w", stdout ); |
char p[256]; |
char **z; |
z=0x20; |
strcpy(p, *z); |
__menuet__debug_out("PATH1...\n"); |
__menuet__debug_out(p); |
__menuet__debug_out("PATH1...\n"); |
*(strrchr(p, '/')+1)='\0'; |
strcpy(strrchr(p, '/')+1, "res/"); |
__menuet__debug_out("PATH1...\n"); |
__menuet__debug_out(p); |
__menuet__debug_out("PATH1...\n"); |
asm volatile ("int $0x40"::"a"(30), "b"(1), "c"(p)); |
LOG(("Registering surfaces for SDL and RAM..")); |
//extern nsfb_surface_rtns_t sdl_rtns; |
553,13 → 572,21 |
_nsfb_register_surface(NSFB_SURFACE_ABLE, &able_rtns, "able"); |
_nsfb_register_surface(NSFB_SURFACE_KOLIBRI, &kolibri_rtns, "kolibri"); |
respaths = fb_init_resource("/hd0/1/res/:/bd0/1/res/:/tmp9/1/netsurf/res/:res/:fonts/"); |
//respaths = fb_init_resource("/kolibrios/:/hd0/1/res/:/bd0/1/res/:/tmp9/1/netsurf/res/:res/:fonts/:"); |
respaths = fb_init_resource(p); |
options = filepath_find(respaths, "Choices"); |
messages = filepath_find(respaths, "messages"); |
netsurf_init(&argc, &argv, options, "res/messages"); |
__menuet__debug_out("===path to msg\n"); |
__menuet__debug_out(messages); |
__menuet__debug_out("\n===path to msg\n"); |
//netsurf_init(&argc, &argv, options, "res/messages"); |
netsurf_init(&argc, &argv, options, messages); |
extern HTTP_INIT(); |
HTTP_INIT(); |
LOG(("NS init okay")); |
free(messages); |
/programs/network/netsurf/netsurf/objs/bitmap.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/box.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/box_construct.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/clipboard.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/curl.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/dll.asm |
---|
0,0 → 1,179 |
include 'proc32.inc' |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls |
__mov eax,a |
__mov ebx,b |
__mov ecx,c |
__mov edx,d |
__mov esi,e |
__mov edi,f |
int 0x40 |
} |
format ELF |
section '.text' executable |
public dll_load |
public mem_Free |
public mem_Alloc |
public mem_ReAlloc |
;----------------------------------------------------------------------------- |
proc dll_load, import_table:dword |
mov esi, [import_table] |
.next_lib: |
mov edx, [esi] |
or edx, edx |
jz .exit |
push esi |
mov esi, [esi + 4] |
mov edi, s_libdir.fname |
@@: |
lodsb |
stosb |
or al, al |
jnz @b |
mcall 68, 19, s_libdir |
or eax, eax |
jz .fail |
stdcall dll.Link, eax, edx |
push eax |
mov eax, [eax] |
cmp dword[eax], 'lib_' |
pop eax |
jnz @f |
stdcall dll.Init, [eax + 4] |
@@: |
pop esi |
add esi, 8 |
jmp .next_lib |
.exit: |
xor eax, eax |
ret |
.fail: |
add esp, 4 |
xor eax, eax |
inc eax |
ret |
endp |
;----------------------------------------------------------------------------- |
proc dll.Link, exp:dword, imp:dword |
push eax |
mov esi, [imp] |
test esi, esi |
jz .done |
.next: |
lodsd |
test eax, eax |
jz .done |
stdcall dll.GetProcAddress, [exp], eax |
or eax, eax |
jz @f |
mov [esi - 4], eax |
jmp .next |
@@: |
mov dword[esp], 0 |
.done: |
pop eax |
ret |
endp |
;----------------------------------------------------------------------------- |
proc dll.Init, dllentry:dword |
pushad |
mov eax, mem_Alloc |
mov ebx, mem_Free |
mov ecx, mem_ReAlloc |
mov edx, dll_load |
stdcall [dllentry] |
popad |
ret |
endp |
;----------------------------------------------------------------------------- |
proc dll.GetProcAddress, exp:dword, sz_name:dword |
mov edx, [exp] |
xor eax, eax |
.next: |
or edx, edx |
jz .end |
cmp dword[edx], 0 |
jz .end |
stdcall strcmp, [edx], [sz_name] |
test eax, eax |
jz .ok |
add edx, 8 |
jmp .next |
.ok: |
mov eax, [edx + 4] |
.end: |
ret |
endp |
;----------------------------------------------------------------------------- |
proc strcmp, str1:dword, str2:dword |
push esi edi |
mov esi, [str1] |
mov edi, [str2] |
xor eax, eax |
@@: |
lodsb |
scasb |
jne .fail |
or al, al |
jnz @b |
jmp .ok |
.fail: |
or eax, -1 |
.ok: |
pop edi esi |
ret |
endp |
;----------------------------------------------------------------------------- |
s_libdir: |
db '/sys/lib/' |
.fname rb 32 |
;----------------------------------------------------------------------------- |
proc mem_Alloc, size |
push ebx ecx |
mov ecx, [size] |
mcall 68, 12 |
pop ecx ebx |
ret |
endp |
;----------------------------------------------------------------------------- |
proc mem_ReAlloc, mptr, size |
push ebx ecx edx |
mov ecx, [size] |
or ecx, ecx |
jz @f |
@@: |
mov edx, [mptr] |
or edx, edx |
jz @f |
@@: |
mcall 68, 20 |
or eax, eax |
jz @f |
@@: |
pop edx ecx ebx |
ret |
endp |
;----------------------------------------------------------------------------- |
proc mem_Free, mptr |
push ebx ecx |
mov ecx,[mptr] |
or ecx,ecx |
jz @f |
@@: |
mcall 68, 13 |
pop ecx ebx |
ret |
endp |
;----------------------------------------------------------------------------- |
/programs/network/netsurf/netsurf/objs/dll.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/network/netsurf/netsurf/objs/filetype.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/findfile.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/font_freetype.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/form.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/framebuffer.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/gui.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/html.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/html_forms.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/html_redraw.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/layout.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/list.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/localhistory.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/login.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/misc.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/nsfont_bold.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/nsfont_italic.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/nsfont_italic_bold.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/nsfont_regular.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/schedule.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/system_colour.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/textplain.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/thumbnail.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/programs/network/netsurf/netsurf/objs/tree.o |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |