/programs/network/telnet/trunk/telnet.asm |
---|
6,22 → 6,20 |
; |
use32 |
org 0x0 |
db 'MENUET01' ; header |
dd 0x01 ; header version |
dd START ; entry point |
dd I_END ; image size |
dd I_END+0x10000 ; required memory |
dd I_END+0x10000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Path |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
; esp = 0x7FFF0 |
dd 0x00000000 ; reserved=no extended header |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
START: ; start of execution |
; Clear the screen memory |
mov eax, ' ' |
45,21 → 43,21 |
mov [socket_status], eax |
cmp eax, ebx |
je waitev |
je waitev |
call draw_window |
waitev: |
mov eax,23 ; wait here for event |
mov eax,23 ; wait here for event |
mov ebx,20 |
int 0x40 |
cmp eax,1 ; redraw request ? |
je red |
cmp eax,2 ; key in buffer ? |
je key |
cmp eax,3 ; button in buffer ? |
je button |
cmp eax,1 ; redraw request ? |
je red |
cmp eax,2 ; key in buffer ? |
je key |
cmp eax,3 ; button in buffer ? |
je button |
; any data from the socket? |
106,11 → 104,11 |
mov al, [telnetstate] |
cmp al, 0 |
je state0 |
je state0 |
cmp al, 1 |
je state1 |
je state1 |
cmp al, 2 |
je state2 |
je state2 |
jmp hd001 |
state0: |
139,7 → 137,7 |
ret |
hd001: |
cmp bl,13 ; BEGINNING OF LINE |
cmp bl,13 ; BEGINNING OF LINE |
jne nobol |
mov ecx,[pos] |
add ecx,1 |
155,7 → 153,7 |
jmp newdata |
nobol: |
cmp bl,10 ; LINE DOWN |
cmp bl,10 ; LINE DOWN |
jne nolf |
addx1: |
add [pos],dword 1 |
169,7 → 167,7 |
jmp cm1 |
nolf: |
cmp bl,8 ; BACKSPACE |
cmp bl,8 ; BACKSPACE |
jne nobasp |
mov eax,[pos] |
dec eax |
179,7 → 177,7 |
jmp newdata |
nobasp: |
cmp bl,15 ; CHARACTER |
cmp bl,15 ; CHARACTER |
jbe newdata |
mov eax,[pos] |
mov [eax+text],bl |
189,7 → 187,7 |
mov ebx,[scroll+4] |
imul ebx,80 |
cmp eax,ebx |
jb noeaxz |
jb noeaxz |
mov esi,text+80 |
mov edi,text |
mov ecx,ebx |
203,20 → 201,20 |
ret |
red: ; REDRAW WINDOW |
red: ; REDRAW WINDOW |
call draw_window |
jmp still |
key: ; KEY |
mov eax,2 ; send to modem |
key: ; KEY |
mov eax,2 ; send to modem |
int 0x40 |
mov ebx, [socket_status] |
cmp ebx, 4 ; connection open? |
jne still ; no, so ignore key |
cmp ebx, 4 ; connection open? |
jne still ; no, so ignore key |
shr eax,8 |
cmp eax,178 ; ARROW KEYS |
cmp eax,178 ; ARROW KEYS |
jne noaup |
mov al,'A' |
call arrow |
246,10 → 244,10 |
jmp still |
button: ; BUTTON |
button: ; BUTTON |
mov eax,17 |
int 0x40 |
cmp ah,1 ; CLOSE PROGRAM |
cmp ah,1 ; CLOSE PROGRAM |
jne noclose |
mov eax,53 |
260,7 → 258,7 |
mov eax,-1 |
int 0x40 |
noclose: |
cmp ah, 2 ; Set IP |
cmp ah, 2 ; Set IP |
jne notip |
mov [string_x], dword 78 |
273,9 → 271,9 |
ip1: |
inc esi |
cmp [esi],byte '0' |
jb ip2 |
jb ip2 |
cmp [esi],byte '9' |
jg ip2 |
jg ip2 |
imul eax,10 |
movzx ebx,byte [esi] |
sub ebx,48 |
293,7 → 291,7 |
jmp still |
notip: |
cmp ah, 3 ; set port |
cmp ah, 3 ; set port |
jne notport |
mov [string_x], dword 215 |
306,9 → 304,9 |
ip11: |
inc esi |
cmp [esi],byte '0' |
jb ip21 |
jb ip21 |
cmp [esi],byte '9' |
jg ip21 |
jg ip21 |
imul eax,10 |
movzx ebx,byte [esi] |
sub ebx,48 |
324,24 → 322,24 |
jmp still |
notport: |
cmp ah, 4 ; connect |
cmp ah, 4 ; connect |
jne notcon |
mov eax, [socket_status] |
cmp eax, 4 |
je still |
je still |
call connect |
jmp still |
notcon: |
cmp ah,5 ; disconnect |
cmp ah,5 ; disconnect |
jne notdiscon |
call disconnect |
jmp still |
notdiscon: ; Echo Toggle |
notdiscon: ; Echo Toggle |
cmp ah, 6 |
jne still |
382,7 → 380,7 |
pop bx |
mov al, [echo] |
cmp al, 0 |
je tm_001 |
je tm_001 |
push bx |
call handle_data |
415,17 → 413,17 |
connect: |
pusha |
mov ecx, 1000 ; local port starting at 1000 |
mov ecx, 1000 ; local port starting at 1000 |
getlp: |
inc ecx |
inc ecx |
push ecx |
mov eax, 53 |
mov ebx, 9 |
int 0x40 |
pop ecx |
cmp eax, 0 ; is this local port in use? |
jz getlp ; yes - so try next |
mov eax, 53 |
mov ebx, 9 |
int 0x40 |
pop ecx |
cmp eax, 0 ; is this local port in use? |
jz getlp ; yes - so try next |
mov eax,53 |
mov ebx,5 |
437,7 → 435,7 |
shl edx, 8 |
mov dl, [ip_address] |
mov esi, edx |
movzx edx, word [port] ; telnet port id |
movzx edx, word [port] ; telnet port id |
mov edi,1 ; active open |
int 0x40 |
mov [socket], eax |
461,31 → 459,13 |
mov ebx,1 |
int 0x40 |
mov eax,0 ; DRAW WINDOW |
xor eax,eax ; DRAW WINDOW |
mov ebx,100*65536+491 + 8 +15 |
mov ecx,100*65536+270 + 20 ; 20 for status bar |
mov edx,[wcolor] |
add edx,0x02000000 |
mov esi,0x80557799 |
mov edi,0x00557799 |
mov edx,0x13000000 |
mov edi,labelt |
int 0x40 |
mov eax,4 ; WINDOW LABEL |
mov ebx,8*65536+8 |
mov ecx,0x00ffffff |
mov edx,labelt |
mov esi,labellen-labelt |
int 0x40 |
mov eax,8 ; CLOSE BUTTON |
mov ebx,(491 + 20 -19)*65536+12 |
mov ecx,5*65536+12 |
mov edx,1 |
mov esi,0x557799 |
int 0x40 |
; draw status bar |
mov eax, 13 |
mov ebx, 4*65536+484 + 8 +15 |
493,7 → 473,7 |
mov edx, 0x00557799 |
int 0x40 |
mov eax,8 ; BUTTON 2: SET IP |
mov eax,8 ; BUTTON 2: SET IP |
mov ebx,4*65536+70 |
mov ecx,273*65536+12 |
mov esi, 0x00557799 |
500,7 → 480,7 |
mov edx,2 |
int 0x40 |
mov eax,4 ; Button text |
mov eax,4 ; Button text |
mov ebx,6*65536+276 |
mov ecx,0x00ffffff |
mov edx,setipt |
508,7 → 488,7 |
int 0x40 |
mov edi,ip_address ; display IP address |
mov edi,ip_address ; display IP address |
mov edx,78*65536+276 |
mov esi,0x00ffffff |
mov ebx,3*65536 |
519,9 → 499,9 |
add edx,6*4*65536 |
inc edi |
cmp edi,ip_address+4 |
jb ipdisplay |
jb ipdisplay |
mov eax,8 ; BUTTON 3: SET PORT |
mov eax,8 ; BUTTON 3: SET PORT |
mov ebx,173*65536+38 |
mov ecx,273*65536+12 |
mov edx,3 |
528,7 → 508,7 |
mov esi, 0x00557799 |
int 0x40 |
mov eax,4 ; Button text |
mov eax,4 ; Button text |
mov ebx,178*65536+276 |
mov ecx,0x00ffffff |
mov edx,setportt |
536,7 → 516,7 |
int 0x40 |
mov edx,216*65536+276 ; display port |
mov edx,216*65536+276 ; display port |
mov esi,0x00ffffff |
mov ebx,4*65536 |
mov eax,47 |
543,7 → 523,7 |
movzx ecx,word [port] |
int 0x40 |
mov eax,8 ; BUTTON 4: Connect |
mov eax,8 ; BUTTON 4: Connect |
mov ebx,250*65536+50 |
mov ecx,273*65536+12 |
mov esi, 0x00557799 |
550,7 → 530,7 |
mov edx,4 |
int 0x40 |
mov eax,4 ; Button text |
mov eax,4 ; Button text |
mov ebx,255*65536+276 |
mov ecx,0x00ffffff |
mov edx,cont |
558,7 → 538,7 |
int 0x40 |
mov eax,8 ; BUTTON 5: disconnect |
mov eax,8 ; BUTTON 5: disconnect |
mov ebx,303*65536+70 |
mov ecx,273*65536+12 |
mov edx,5 |
566,7 → 546,7 |
int 0x40 |
mov eax,4 ; Button text |
mov eax,4 ; Button text |
mov ebx,307*65536+276 |
mov ecx,0x00ffffff |
mov edx,dist |
574,22 → 554,22 |
int 0x40 |
mov esi,contlen-contt ; display connected status |
mov esi,contlen-contt ; display connected status |
mov edx, contt |
mov eax, [socket_status] |
cmp eax, 4 ; 4 is connected |
je pcon |
cmp eax, 4 ; 4 is connected |
je pcon |
mov esi,discontlen-discontt |
mov edx, discontt |
pcon: |
mov eax,4 ; status text |
mov eax,4 ; status text |
mov ebx,380*65536+276 |
mov ecx,0x00ffffff |
int 0x40 |
mov eax,8 ; BUTTON 6: echo |
mov eax,8 ; BUTTON 6: echo |
mov ebx,460*65536+50 |
mov ecx,273*65536+12 |
mov edx,6 |
605,7 → 585,7 |
mov esi,echoolen-echoot |
peo: |
mov eax,4 ; Button text |
mov eax,4 ; Button text |
mov ebx,463*65536+276 |
mov ecx,0x00ffffff |
int 0x40 |
646,7 → 626,7 |
; erase character |
pusha |
mov edx, 0 ; bg colour |
mov edx, 0 ; bg colour |
mov ecx, ebx |
add ecx, 26 |
shl ecx, 16 |
680,11 → 660,11 |
add esi,1 |
add eax,6 |
cmp eax,80*6 |
jb newletter |
jb newletter |
mov eax,0 |
add ebx,10 |
cmp ebx,24*10 |
jb newletter |
jb newletter |
popa |
ret |
710,11 → 690,11 |
int 0x40 |
shr eax,8 |
cmp eax,13 |
je read_done |
je read_done |
cmp eax,8 |
jnz nobsl |
cmp edi,string |
jz f11 |
jz f11 |
sub edi,1 |
mov [edi],byte '_' |
call print_text |
723,7 → 703,7 |
cmp eax,dword 31 |
jbe f11 |
cmp eax,dword 95 |
jb keyok |
jb keyok |
sub eax,32 |
keyok: |
mov [edi],al |
774,42 → 754,41 |
; DATA AREA |
telnetrep db 0xff,0xfc,0x00 |
telnetstate db 0 |
telnetrep db 0xff,0xfc,0x00 |
telnetstate db 0 |
string_length dd 16 |
string_x dd 200 |
string_y dd 60 |
string db '________________' |
string db '________________' |
tx_buff db 0, 10 |
ip_address db 001,002,003,004 |
port db 0,0 |
echo db 0 |
socket dd 0x0 |
socket_status dd 0x0 |
pos dd 80 * 1 |
scroll dd 1 |
dd 24 |
wcolor dd 0x000000 |
labelt db 'Telnet v0.1' |
labellen: |
setipt db 'IP Address: . . .' |
tx_buff db 0, 10 |
ip_address db 001,002,003,004 |
port db 0,0 |
echo db 0 |
socket dd 0x0 |
socket_status dd 0x0 |
pos dd 80 * 1 |
scroll dd 1 |
dd 24 |
wcolor dd 0x000000 |
labelt db 'Telnet v0.1',0 |
setipt db 'IP Address: . . .' |
setiplen: |
setportt db 'Port:' |
setportt db 'Port:' |
setportlen: |
cont db 'Connect' |
cont db 'Connect' |
conlen: |
dist db 'Disconnect' |
dist db 'Disconnect' |
dislen: |
contt db 'Connected' |
contt db 'Connected' |
contlen: |
discontt db 'Disconnected' |
discontt db 'Disconnected' |
discontlen: |
echot db 'Echo On' |
echot db 'Echo On' |
echolen: |
echoot db 'Echo Off' |
echoot db 'Echo Off' |
echoolen: |
/programs/network/terminal/trunk/terminal.asm |
---|
1,27 → 1,22 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; |
; TERMINAL |
; |
; Compile with FASM for Menuet |
; |
use32 |
org 0x0 |
db 'MENUET01' ; header |
dd 0x01 ; header version |
dd START ; entry point |
dd I_END ; image size |
dd I_END+0x10000 ; required memory |
dd I_END+0x10000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Path |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
; esp = 0x7FFF0 |
dd 0x00000000 ; reserved=no extended header |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
START: ; start of execution |
call draw_window |
29,18 → 24,18 |
still: |
mov eax,23 ; wait here for event |
mov eax,23 ; wait here for event |
mov ebx,20 |
int 0x40 |
cmp eax,1 ; redraw request ? |
je red |
cmp eax,2 ; key in buffer ? |
je key |
cmp eax,3 ; button in buffer ? |
je button |
cmp eax,1 ; redraw request ? |
je red |
cmp eax,2 ; key in buffer ? |
je key |
cmp eax,3 ; button in buffer ? |
je button |
cmp eax,16+4 |
je read_input |
je read_input |
jmp still |
53,13 → 48,13 |
int 0x40 |
pop ecx |
cmp bl,27 ; ESCAPE COMMAND |
cmp bl,27 ; ESCAPE COMMAND |
jne no_esc |
call esc_command |
jmp newdata |
no_esc: |
cmp bl,13 ; BEGINNING OF LINE |
cmp bl,13 ; BEGINNING OF LINE |
jne nobol |
mov ecx,[pos] |
add ecx,1 |
75,7 → 70,7 |
jmp newdata |
nobol: |
cmp bl,10 ; LINE DOWN |
cmp bl,10 ; LINE DOWN |
jne nolf |
addx1: |
add [pos],dword 1 |
89,7 → 84,7 |
jmp cm1 |
nolf: |
cmp bl,8 ; BACKSPACE |
cmp bl,8 ; BACKSPACE |
jne nobasp |
mov eax,[pos] |
dec eax |
99,7 → 94,7 |
jmp newdata |
nobasp: |
cmp bl,15 ; CHARACTER |
cmp bl,15 ; CHARACTER |
jbe newdata |
mov eax,[pos] |
call draw_data |
109,7 → 104,7 |
mov ebx,[scroll+4] |
imul ebx,80 |
cmp eax,ebx |
jb noeaxz |
jb noeaxz |
mov esi,text+80 |
mov edi,text |
mov ecx,ebx |
128,20 → 123,20 |
mov eax,11 |
int 0x40 |
cmp eax,16+4 |
je read_input |
je read_input |
call draw_text |
jmp still |
red: ; REDRAW WINDOW |
red: ; REDRAW WINDOW |
call draw_window |
jmp still |
key: ; KEY |
mov eax,2 ; send to modem |
key: ; KEY |
mov eax,2 ; send to modem |
int 0x40 |
shr eax,8 |
cmp eax,178 ; ARROW KEYS |
cmp eax,178 ; ARROW KEYS |
jne noaup |
mov al,'A' |
call arrow |
172,12 → 167,12 |
int 0x40 |
jmp still |
button: ; BUTTON |
button: ; BUTTON |
mov eax,17 |
int 0x40 |
cmp ah,1 ; CLOSE PROGRAM |
cmp ah,1 ; CLOSE PROGRAM |
jne noclose |
mov eax,45 ; FREE IRQ |
mov eax,45 ; FREE IRQ |
mov ebx,1 |
mov ecx,4 |
int 0x40 |
244,22 → 239,22 |
irqtable: |
dd 0x3f8 + 0x01000000 ; read port 0x3f8, byte |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0x3f8 + 0x01000000 ; read port 0x3f8, byte |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
274,7 → 269,7 |
mov edx,0x3ff |
int 0x40 |
mov eax,45 ; reserve irq 4 |
mov eax,45 ; reserve irq 4 |
mov ebx,0 |
mov ecx,4 |
int 0x40 |
341,29 → 336,13 |
mov ebx,1 |
int 0x40 |
mov eax,0 ; DRAW WINDOW |
mov eax,0 ; DRAW WINDOW |
mov ebx,100*65536+491 |
mov ecx,100*65536+270 |
mov edx,[wcolor] |
add edx,0x02000000 |
mov esi,0x80557799 |
mov edi,0x00557799 |
mov edx,0x13000000 |
mov edi,labelt |
int 0x40 |
mov eax,4 ; WINDOW LABEL |
mov ebx,8*65536+8 |
mov ecx,0x00ffffff |
mov edx,labelt |
mov esi,labellen-labelt |
int 0x40 |
mov eax,8 ; CLOSE BUTTON |
mov ebx,(491-19)*65536+12 |
mov ecx,5*65536+12 |
mov edx,1 |
mov esi,0x557799 |
int 0x40 |
xor eax,eax |
mov edi,text+80*30 |
mov ecx,80*30 /4 |
458,11 → 437,11 |
add esi,1 |
add eax,6 |
cmp eax,80*6 |
jb newletter |
jb newletter |
mov eax,0 |
add ebx,10 |
cmp ebx,24*10 |
jb newletter |
jb newletter |
popa |
ret |
503,7 → 482,7 |
call get_numbers |
cmp bl,'H' ; SET CURSOR POSITION |
cmp bl,'H' ; SET CURSOR POSITION |
jne no_cursor_position |
cmp [escnumbers],0 |
jne ncp1 |
519,7 → 498,7 |
jmp cmd_done |
no_cursor_position: |
cmp bl,'K' ; ERASE LINE |
cmp bl,'K' ; ERASE LINE |
jne no_erase_end_of_line |
cmp [escnumbers],0 |
jne no_end_line |
536,7 → 515,7 |
jne eeol |
jmp cmd_done |
no_end_line: |
cmp [escnumbers],1 ; BEGINNING OF LINE |
cmp [escnumbers],1 ; BEGINNING OF LINE |
jne no_beg_line |
mov ecx,[pos] |
ebol: |
554,7 → 533,7 |
no_beg_line: |
no_erase_end_of_line: |
cmp bl,'J' ; ERASE TO END OF SCREEN |
cmp bl,'J' ; ERASE TO END OF SCREEN |
jne no_erase_to_end_of_screen |
cmp [escnumbers],dword 0 |
jne no_erase_to_end_of_screen |
568,7 → 547,7 |
jmp cmd_done |
no_erase_to_end_of_screen: |
cmp bl,'r' ; SET SCROLL REGION |
cmp bl,'r' ; SET SCROLL REGION |
jne no_scroll_region |
mov eax,[escnumbers] |
dec eax |
578,7 → 557,7 |
jmp cmd_done |
no_scroll_region: |
cmp bl,'A' ; CURSOR UP |
cmp bl,'A' ; CURSOR UP |
jne no_cursor_up |
mov eax,[pos] |
sub eax,80 |
586,7 → 565,7 |
jmp cmd_done |
no_cursor_up: |
cmp bl,'C' ; CURSOR LEFT |
cmp bl,'C' ; CURSOR LEFT |
jne no_cursor_left |
mov eax,[pos] |
mov ebx,[escnumbers] |
595,7 → 574,7 |
call cmd_done |
no_cursor_left: |
cmp bl,'m' ; CHARACTER ATTRIBUTE |
cmp bl,'m' ; CHARACTER ATTRIBUTE |
jne no_char_attribute |
mov eax,[escnumbers] |
mov [attribute],eax |
602,7 → 581,7 |
jmp cmd_done |
no_char_attribute: |
cmp bl,'Z' ; TERMINAL TYPE |
cmp bl,'Z' ; TERMINAL TYPE |
jne no_terminal_type |
mov al,27 |
call to_modem |
730,19 → 709,18 |
; DATA AREA |
pos dd 80*10 |
irc_data dd 0x0 |
print db 0x0 |
attribute dd 0 |
scroll dd 1 |
dd 24 |
numtext db ' ' |
esccmd dd 0,0,0,0,0,0,0,0,0,0,0,0,0 |
escend db 'ZrhlABCDHfDME=>NmKJgincoyq',0 |
escnumbers dd 0,0,0,0,0 |
wcolor dd 0x000000 |
labelt db 'TERMINAL FOR MODEM IN COM1 0.03' |
labellen: |
pos dd 80*10 |
irc_data dd 0x0 |
print db 0x0 |
attribute dd 0 |
scroll dd 1 |
dd 24 |
numtext db ' ' |
esccmd dd 0,0,0,0,0,0,0,0,0,0,0,0,0 |
escend db 'ZrhlABCDHfDME=>NmKJgincoyq',0 |
escnumbers dd 0,0,0,0,0 |
wcolor dd 0x000000 |
labelt db 'TERMINAL FOR MODEM IN COM1 0.03',0 |
text: |
db ' ' |
/programs/network/tftpa/trunk/tftpa.asm |
---|
8,57 → 8,56 |
; |
use32 |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
dd 0x00000000 ; reserved=no extended header |
org 0x0 |
db 'MENUET01' ; header |
dd 0x01 ; header version |
dd START ; entry point |
dd I_END ; image size |
dd I_END+0x10000 ; required memory |
dd I_END+0x10000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Path |
include 'lang.inc' |
include 'macros.inc' |
delay dd 145 |
delay dd 145 |
wait_for dd 0x0 |
START: ; start of execution |
START: ; start of execution |
mov dword [prompt], p9 |
mov dword [promptlen], p9len - p9 |
call draw_window ; at first, draw the window |
call draw_window ; at first, draw the window |
still: |
mov eax,10 ; wait here for event |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
cmp eax,1 ; redraw request ? |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
jmp still |
red: ; redraw |
red: ; redraw |
call draw_window |
jmp still |
key: ; Keys are not valid at this part of the |
mov eax,2 ; loop. Just read it and ignore |
key: ; Keys are not valid at this part of the |
mov eax,2 ; loop. Just read it and ignore |
int 0x40 |
jmp still |
button: ; button |
mov eax,17 ; get id |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
cmp ah,1 ; button id=1 ? |
jnz noclose |
71,19 → 70,19 |
mov [socketNum], dword 0 |
mov eax,0xffffffff ; close this program |
mov eax,0xffffffff ; close this program |
int 0x40 |
noclose: |
cmp ah,2 ; copy file to local machine? |
cmp ah,2 ; copy file to local machine? |
jnz nocopyl |
mov dword [prompt], p5 |
mov dword [promptlen], p5len - p5 |
call draw_window ; |
call draw_window ; |
; Copy File from Remote Host to this machine |
call translateData ; Convert Filename & IP address |
call translateData ; Convert Filename & IP address |
mov edi, tftp_filename + 1 |
mov [edi], byte 0x01 ; setup tftp msg |
call copyFromRemote |
94,9 → 93,9 |
cmp ah,4 |
jz f1 |
jz f1 |
cmp ah,5 |
jz f2 |
jz f2 |
jmp nof12 |
f1: |
122,7 → 121,7 |
mov eax,10 |
int 0x40 |
cmp eax,2 |
jz fbu |
jz fbu |
jmp still |
fbu: |
mov eax,2 |
131,7 → 130,7 |
cmp eax,8 |
jnz nobs |
cmp edi,[addr] |
jz f11 |
jz f11 |
sub edi,1 |
mov [edi],byte ' ' |
call print_text |
140,7 → 139,7 |
cmp eax,dword 31 |
jbe f11 |
cmp eax,dword 95 |
jb keyok |
jb keyok |
sub eax,32 |
keyok: |
mov [edi],al |
312,12 → 311,12 |
mov eax, 3 |
int 0x40 |
mov ecx, eax |
shr ecx, 8 ; Set up the local port # with a random # |
shr ecx, 8 ; Set up the local port # with a random # |
; open socket |
mov eax, 53 |
mov ebx, 0 |
mov edx, 69 ; remote port |
mov edx, 69 ; remote port |
mov esi, [tftp_IP] ; remote IP ( in intenet format ) |
int 0x40 |
337,7 → 336,7 |
int 0x40 ; any more data? |
cmp eax, 0 |
jne cfr001 ; yes, so get it |
jne cfr001 ; yes, so get it |
; Now, request the file |
mov eax, 53 |
349,16 → 348,16 |
cfr002: |
mov eax,23 ; wait here for event |
mov ebx,1 ; Time out after 10ms |
mov eax,23 ; wait here for event |
mov ebx,1 ; Time out after 10ms |
int 0x40 |
cmp eax,1 ; redraw request ? |
je cfr003 |
cmp eax,2 ; key in buffer ? |
je cfr004 |
cmp eax,3 ; button in buffer ? |
je cfr005 |
cmp eax,1 ; redraw request ? |
je cfr003 |
cmp eax,2 ; key in buffer ? |
je cfr004 |
cmp eax,3 ; button in buffer ? |
je cfr005 |
; Any data to fetch? |
mov eax, 53 |
377,7 → 376,7 |
je cfr008 |
mov dword [prompt], p3 |
mov dword [promptlen], p3len - p3 |
call draw_window ; |
call draw_window ; |
cfr008: |
; we have data - this will be a tftp frame |
441,7 → 440,7 |
wait_more: |
mov eax,5 ; wait for correct timer position |
; to trigger new play block |
; to trigger new play block |
mov ebx,1 |
int 0x40 |
510,32 → 509,32 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
mov eax, 53 |
mov ebx, 2 |
mov ecx, [socketNum] |
int 0x40 ; any more data? |
int 0x40 ; any more data? |
cmp eax, 0 |
jne cfrerr ; yes, so get it |
jne cfrerr ; yes, so get it |
jmp cfr006 ; close socket and close app |
jmp cfr006 ; close socket and close app |
cfr003: ; redraw request |
cfr003: ; redraw request |
call draw_window |
jmp cfr002 |
cfr004: ; key pressed |
mov eax,2 ; just read it and ignore |
cfr004: ; key pressed |
mov eax,2 ; just read it and ignore |
int 0x40 |
jmp cfr002 |
cfr005: ; button |
mov eax,17 ; get id |
cfr005: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
cmp ah,1 ; button id=1 ? |
jne cfr002 ; If not, ignore. |
cfr006: |
547,7 → 546,7 |
mov [socketNum], dword 0 |
mov eax,-1 ; close this program |
mov eax,-1 ; close this program |
int 0x40 |
jmp $ |
563,7 → 562,7 |
mov dword [prompt], p4 |
mov dword [promptlen], p4len - p4 |
call draw_window ; |
call draw_window ; |
ret |
577,29 → 576,20 |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+230 ; [x start] *65536 + [x size] |
mov ecx,100*65536+170 ; [y start] *65536 + [y size] |
mov edx,0x03224466 ; color of work area RRGGBB |
mov esi,0x00334455 ; color of grab bar RRGGBB,8->color gl |
mov edi,0x00ddeeff ; color of frames RRGGBB |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+230 ; [x start] *65536 + [x size] |
mov ecx,100*65536+170 ; [y start] *65536 + [y size] |
mov edx,0x13224466 ; color of work area RRGGBB |
mov edi,labelt |
int 0x40 |
; WINDOW LABEL |
mov eax,4 ; function 4 : write text to window |
mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
mov ecx,0x00ffffff ; color of text RRGGBB |
mov edx,labelt ; pointer to text beginning |
mov esi,labellen-labelt ; text length |
int 0x40 |
mov eax,8 ; COPY BUTTON |
mov eax,8 ; COPY BUTTON |
mov ebx,20*65536+190 |
mov ecx,79*65536+15 |
mov edx,3 |
606,7 → 596,7 |
mov esi,0x557799 |
; int 0x40 |
mov eax,8 ; DELETE BUTTON |
mov eax,8 ; DELETE BUTTON |
mov ebx,20*65536+190 |
mov ecx,111*65536+15 |
mov edx,2 |
652,7 → 642,7 |
; Re-draw the screen text |
cld |
mov ebx,25*65536+35 ; draw info text with function 4 |
mov ebx,25*65536+35 ; draw info text with function 4 |
mov ecx,0xffffff |
mov edx,text |
mov esi,40 |
665,8 → 655,8 |
jnz newline |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
ret |
674,11 → 664,11 |
; DATA AREA |
source db 'HEAT8M22.WAV ' |
source db 'HEAT8M22.WAV ' |
destination db '192.168.1.24 ' |
tftp_filename: times 15 + 9 db 0 |
tftp_filename: times 15 + 9 db 0 |
tftp_IP: dd 0 |
tftp_len: dd 0 |
698,14 → 688,11 |
db ' SERVER -> PLAY FILE ' |
db ' ' |
db ' ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
labelt: |
db 'TFTP Wave Player' |
labellen: |
labelt db 'TFTP Wave Player',0 |
prompt: dd 0 |
promptlen: dd 0 |
/programs/network/tftpc/trunk/tftpc.asm |
---|
1,60 → 1,56 |
; |
; TFTP Client |
; |
; Compile with FASM for Menuet |
; |
use32 |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
dd 0x00000000 ; reserved=no extended header |
org 0x0 |
db 'MENUET01' ; header |
dd 0x01 ; header version |
dd START ; entry point |
dd I_END ; image size |
dd I_END+0x10000 ; required memory |
dd I_END+0x10000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Path |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
mov eax,40 ; Report events |
mov ebx,10000111b ; Stack 8 + defaults |
START: ; start of execution |
mov eax,40 ; Report events |
mov ebx,10000111b ; Stack 8 + defaults |
int 0x40 |
mov dword [prompt], p1 |
mov dword [promptlen], p1len - p1 |
call draw_window ; at first, draw the window |
call draw_window ; at first, draw the window |
still: |
mov eax,10 ; wait here for event |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
cmp eax,1 ; redraw request ? |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
jmp still |
red: ; redraw |
red: ; redraw |
call draw_window |
jmp still |
key: ; Keys are not valid at this part of the |
mov eax,2 ; loop. Just read it and ignore |
key: ; Keys are not valid at this part of the |
mov eax,2 ; loop. Just read it and ignore |
int 0x40 |
jmp still |
button: ; button |
mov eax,17 ; get id |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
cmp ah,1 ; button id=1 ? |
jnz noclose |
67,19 → 63,19 |
mov [socketNum], dword 0 |
mov eax,0xffffffff ; close this program |
mov eax,0xffffffff ; close this program |
int 0x40 |
noclose: |
cmp ah,2 ; copy file to local machine? |
cmp ah,2 ; copy file to local machine? |
jnz nocopyl |
mov dword [prompt], p5 |
mov dword [promptlen], p5len - p5 |
call draw_window ; |
call draw_window ; |
; Copy File from Remote Host to this machine |
call translateData ; Convert Filename & IP address |
call translateData ; Convert Filename & IP address |
mov edi, tftp_filename + 1 |
mov [edi], byte 0x01 ; setup tftp msg |
call copyFromRemote |
88,15 → 84,15 |
nocopyl: |
cmp ah,3 ; Copy file to host? |
cmp ah,3 ; Copy file to host? |
jnz nocopyh |
mov dword [prompt], p5 |
mov dword [promptlen], p5len - p5 |
call draw_window ; |
call draw_window ; |
; Copy File from this machine to Remote Host |
call translateData ; Convert Filename & IP address |
call translateData ; Convert Filename & IP address |
mov edi, tftp_filename + 1 |
mov [edi], byte 0x02 ; setup tftp msg |
call copyToRemote |
105,9 → 101,9 |
nocopyh: |
cmp ah,4 |
jz f1 |
jz f1 |
cmp ah,5 |
jz f2 |
jz f2 |
jmp nof12 |
f1: |
133,7 → 129,7 |
mov eax,10 |
int 0x40 |
cmp eax,2 |
jz fbu |
jz fbu |
jmp still |
fbu: |
mov eax,2 |
142,7 → 138,7 |
cmp eax,8 |
jnz nobs |
cmp edi,[addr] |
jz f11 |
jz f11 |
sub edi,1 |
mov [edi],byte ' ' |
call print_text |
151,7 → 147,7 |
cmp eax,dword 31 |
jbe f11 |
cmp eax,dword 95 |
jb keyok |
jb keyok |
sub eax,32 |
keyok: |
mov [edi],al |
322,18 → 318,18 |
; Get a random # for the local socket port # |
mov eax, 3 |
int 0x40 |
int 0x40 |
mov ecx, eax |
shr ecx, 8 ; Set up the local port # with a random # |
shr ecx, 8 ; Set up the local port # with a random # |
; open socket |
mov eax, 53 |
mov ebx, 0 |
mov edx, 69 ; remote port |
mov edx, 69 ; remote port |
mov esi, [tftp_IP] ; remote IP ( in intenet format ) |
int 0x40 |
mov [socketNum], eax |
mov [socketNum], eax |
; make sure there is no data in the socket - there shouldn't be.. |
341,15 → 337,15 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
mov eax, 53 |
mov ebx, 2 |
mov ecx, [socketNum] |
int 0x40 ; any more data? |
int 0x40 ; any more data? |
cmp eax, 0 |
jne cfr001 ; yes, so get it |
jne cfr001 ; yes, so get it |
; Now, request the file |
mov eax, 53 |
360,15 → 356,15 |
int 0x40 |
cfr002: |
mov eax,10 ; wait here for event |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
je cfr003 |
cmp eax,2 ; key in buffer ? |
je cfr004 |
cmp eax,3 ; button in buffer ? |
je cfr005 |
cmp eax,1 ; redraw request ? |
je cfr003 |
cmp eax,2 ; key in buffer ? |
je cfr004 |
cmp eax,3 ; button in buffer ? |
je cfr005 |
; Any data to fetch? |
mov eax, 53 |
387,7 → 383,7 |
je cfr008 |
mov dword [prompt], p3 |
mov dword [promptlen], p3len - p3 |
call draw_window ; |
call draw_window ; |
cfr008: |
; we have data - this will be a tftp frame |
396,12 → 392,12 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
pop eax |
; bl holds tftp opcode. Can only be 3 (data) or 5 ( error ) |
415,7 → 411,7 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
mov [blockNumber], bl |
446,7 → 442,7 |
inc dword [fileposition] |
inc dword [filesize] |
jmp cfr007 |
jmp cfr007 |
no_more_data: |
486,32 → 482,32 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte |
int 0x40 ; read byte |
mov eax, 53 |
mov ebx, 2 |
mov ecx, [socketNum] |
int 0x40 ; any more data? |
int 0x40 ; any more data? |
cmp eax, 0 |
jne cfrerr ; yes, so get it |
jne cfrerr ; yes, so get it |
jmp cfr006 ; close socket and close app |
jmp cfr006 ; close socket and close app |
cfr003: ; redraw request |
cfr003: ; redraw request |
call draw_window |
jmp cfr002 |
cfr004: ; key pressed |
mov eax,2 ; just read it and ignore |
cfr004: ; key pressed |
mov eax,2 ; just read it and ignore |
int 0x40 |
jmp cfr002 |
cfr005: ; button |
mov eax,17 ; get id |
cfr005: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
cmp ah,1 ; button id=1 ? |
jne cfr002 ; If not, ignore. |
cfr006: |
523,7 → 519,7 |
mov [socketNum], dword 0 |
mov eax,-1 ; close this program |
mov eax,-1 ; close this program |
int 0x40 |
jmp $ |
539,7 → 535,7 |
mov dword [prompt], p4 |
mov dword [promptlen], p4len - p4 |
call draw_window ; |
call draw_window ; |
ret |
565,7 → 561,7 |
mov dword [prompt], p6 |
mov dword [promptlen], p6len - p6 |
call draw_window ; |
call draw_window ; |
jmp ctr_exit |
filefound: |
587,18 → 583,18 |
; Get a random # for the local socket port # |
mov eax, 3 |
int 0x40 |
int 0x40 |
mov ecx, eax |
shr ecx, 8 ; Set up the local port # with a random # |
shr ecx, 8 ; Set up the local port # with a random # |
; First, open socket |
mov eax, 53 |
mov ebx, 0 |
mov edx, 69 ; remote port |
mov edx, 69 ; remote port |
mov esi, [tftp_IP] |
int 0x40 |
mov [socketNum], eax |
mov [socketNum], eax |
; write to socket ( request write file ) |
mov eax, 53 |
614,15 → 610,15 |
; or data from remote |
ctr001: |
mov eax,10 ; wait here for event |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
je ctr003 |
cmp eax,2 ; key in buffer ? |
je ctr004 |
cmp eax,3 ; button in buffer ? |
je ctr005 |
cmp eax,1 ; redraw request ? |
je ctr003 |
cmp eax,2 ; key in buffer ? |
je ctr004 |
cmp eax,3 ; button in buffer ? |
je ctr005 |
; Any data in the UDP receive buffer? |
641,7 → 637,7 |
mov dword [prompt], p2 |
mov dword [promptlen], p2len - p2 |
call draw_window ; |
call draw_window ; |
; we have data - this will be the ack |
ctr002: |
648,17 → 644,17 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte - opcode |
int 0x40 ; read byte - opcode |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte - opcode |
int 0x40 ; read byte - opcode |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte - block (high byte) |
int 0x40 ; read byte - block (high byte) |
mov [blockNumber], bl |
665,7 → 661,7 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte - block (low byte ) |
int 0x40 ; read byte - block (low byte ) |
mov [blockNumber+1], bl |
673,13 → 669,13 |
mov eax, 53 |
mov ebx, 3 |
mov ecx, [socketNum] |
int 0x40 ; read byte (shouldn't have worked) |
int 0x40 ; read byte (shouldn't have worked) |
mov eax, 53 |
mov ebx, 2 |
mov ecx, [socketNum] |
int 0x40 ; any more data? |
int 0x40 ; any more data? |
cmp eax, 0 |
jne ctr0022 ; yes, so get it, and dump it |
703,7 → 699,7 |
cmp al, 0 |
jne ctr008 |
dec esi |
inc byte [esi] |
inc byte [esi] |
ctr008: |
; Move forward through the file |
759,20 → 755,20 |
jmp ctr001 |
ctr003: ; redraw |
ctr003: ; redraw |
call draw_window |
jmp ctr001 |
ctr004: ; key |
mov eax,2 ; just read it and ignore |
ctr004: ; key |
mov eax,2 ; just read it and ignore |
int 0x40 |
jmp ctr001 |
ctr005: ; button |
mov eax,17 ; get id |
ctr005: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
cmp ah,1 ; button id=1 ? |
jne ctr001 |
; close socket |
783,7 → 779,7 |
mov [socketNum], dword 0 |
mov eax,-1 ; close this program |
mov eax,-1 ; close this program |
int 0x40 |
jmp $ |
796,7 → 792,7 |
mov dword [prompt], p4 |
mov dword [promptlen], p4len - p4 |
call draw_window ; |
call draw_window ; |
ctr_exit: |
ret |
811,29 → 807,19 |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+230 ; [x start] *65536 + [x size] |
mov ecx,100*65536+170 ; [y start] *65536 + [y size] |
mov edx,0x03224466 ; color of work area RRGGBB |
mov esi,0x00334455 ; color of grab bar RRGGBB,8->color gl |
mov edi,0x00ddeeff ; color of frames RRGGBB |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+230 ; [x start] *65536 + [x size] |
mov ecx,100*65536+170 ; [y start] *65536 + [y size] |
mov edx,0x13224466 ; color of work area RRGGBB |
mov edi,labelt |
int 0x40 |
; WINDOW LABEL |
mov eax,4 ; function 4 : write text to window |
mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
mov ecx,0x00ffffff ; color of text RRGGBB |
mov edx,labelt ; pointer to text beginning |
mov esi,labellen-labelt ; text length |
int 0x40 |
mov eax,8 ; COPY BUTTON |
mov eax,8 ; COPY BUTTON |
mov ebx,20*65536+190 |
mov ecx,79*65536+15 |
mov edx,2 |
840,7 → 826,7 |
mov esi,0x557799 |
int 0x40 |
mov eax,8 ; DELETE BUTTON |
mov eax,8 ; DELETE BUTTON |
mov ebx,20*65536+190 |
mov ecx,111*65536+15 |
mov edx,3 |
886,7 → 872,7 |
; Re-draw the screen text |
cld |
mov ebx,25*65536+35 ; draw info text with function 4 |
mov ebx,25*65536+35 ; draw info text with function 4 |
mov ecx,0xffffff |
mov edx,text |
mov esi,40 |
899,8 → 885,8 |
jnz newline |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
ret |
908,11 → 894,11 |
; DATA AREA |
source db 'KERNEL.ASM ' |
source db 'KERNEL.ASM ' |
destination db '192.168.1.23 ' |
tftp_filename: times 15 + 9 db 0 |
tftp_filename: times 15 + 9 db 0 |
tftp_IP: dd 0 |
tftp_len: dd 0 |
932,14 → 918,11 |
db ' COPY LOCAL -> HOST ' |
db ' ' |
db ' ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
labelt: |
db 'TFTP Client' |
labellen: |
labelt db 'TFTP Client',0 |
prompt: dd 0 |
promptlen: dd 0 |
/programs/network/ym/trunk/ym.asm |
---|
3,14 → 3,15 |
;B+ System header |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd START |
dd I_END |
dd 0x100000 |
dd 0x7fff0 |
dd 0x0,0x0 |
org 0x0 |
db 'MENUET01' ; header |
dd 0x01 ; header version |
dd START ; entry point |
dd I_END ; image size |
dd I_END+0x10000 ; required memory |
dd I_END+0x10000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Path |
;E:. |
include 'lang.inc' |
;B+ Definitions |
19,13 → 20,13 |
fr_sp equ 120 |
line_wid equ 45 |
fr_max_lines equ 17 |
fr_max_lines equ 17 |
;memory |
sys_colors equ I_END |
text_zone equ sys_colors+4*10 |
;friend_zone equ text_zone+45*25 ;uncom |
;friend_zone+32*fr_max_lines |
;friend_zone+32*fr_max_lines |
;E:. |
START: |
143,41 → 144,25 |
draw_window: |
;B+ Draw window |
mov ebx,1 |
mov eax,12 |
int 0x40 |
mov ebx,3 |
mov ecx,sys_colors |
mov edx,10*4 |
mov eax,48 |
int 0x40 |
mov ebx,1 |
mov eax,12 |
int 0x40 |
xor eax,eax ;DRAW WINDOW |
mov ebx,150*65536+h_sp |
mov ecx,100*65536+v_sp |
mov edx,[sys_colors+4*5] |
or edx,0x02000000 |
mov esi,[sys_colors+4*1] |
or esi,0x80000000 |
mov edi,[sys_colors+4*0] |
mov eax,0 |
or edx,0x13000000 |
mov edi,header |
int 0x40 |
mov ebx,8*65536+8 |
mov ecx,[sys_colors+4*4] |
or ecx,0x10000000 |
mov edx,caption |
mov esi,caption_end-caption |
mov eax,4 |
int 0x40 |
mov ebx,(400-19) shl 16 + 12 |
mov ecx,5 shl 16 + 12 |
mov edx,1 |
mov esi,[sys_colors+4*2] |
mov eax,8 |
int 0x40 |
;B+ Friend panel |
mov ebx,(h_sp-fr_sp) shl 16 + 3 |
mov ecx,20 shl 16 + v_sp-31 -56 |
746,7 → 731,7 |
.no_more: |
ret |
last_friend_place dd fr_e ;del |
last_friend_place dd fr_e ;del |
;last_friend_place dd friend_zone ;uncom |
find_friend: |
901,7 → 886,7 |
mov ecx,[sys_colors+4*5] |
mov edx,f_password |
mov esi,4 |
mov eax,4 |
mov eax,4 |
int 0x40 |
jmp still |
.unp dd username |
918,7 → 903,7 |
mov ecx,[sys_colors+4*8] |
mov edx,username |
mov esi,16 |
mov eax,4 |
mov eax,4 |
int 0x40 |
ret |
939,7 → 924,7 |
mov ecx,[sys_colors+4*5] |
mov edx,f_password |
mov esi,4 |
mov eax,4 |
mov eax,4 |
int 0x40 |
.next: |
963,7 → 948,7 |
.no_next: |
call show_password |
jmp still |
.no_still: |
.no_still: |
mov ebx,[.unp] |
mov [ebx],ah |
979,10 → 964,10 |
mov ecx,[sys_colors+4*8] |
mov edx,f_password |
mov esi,4 |
mov eax,4 |
mov eax,4 |
int 0x40 |
.end: |
ret |
ret |
f_password db '####' |
1018,7 → 1003,7 |
; al - friend user char |
; ----- |
; NOTE currenly don't show message if al='!' |
;Variables |
;usernave (zero terminated) |
;password (zero terminated) |
1036,7 → 1021,7 |
mov eax,0 |
ret |
disconnect: |
disconnect: |
;disconnect |
ret |
1049,29 → 1034,25 |
;B+ Test data ;del |
friend_zone: ;del |
db 1,'First:',0 ;del |
db 2,'hahaha',0 ;del |
db 3,'second',0 ;del |
db 3,'menuetos',0 ;del |
db 1,'Treti:',0 ;del |
db 2,'fourth',0 ;del |
fr_e db 0 ;del |
;del |
times 200 db 0 ;del |
;del |
last_friend_line dd 0x6 ;del |
;E:. ;del |
friend_zone: ;del |
db 1,'First:',0 ;del |
db 2,'hahaha',0 ;del |
db 3,'second',0 ;del |
db 3,'menuetos',0 ;del |
db 1,'Treti:',0 ;del |
db 2,'fourth',0 ;del |
fr_e db 0 ;del |
;del |
times 200 db 0 ;del |
;del |
last_friend_line dd 0x6 ;del |
header db 'Messenger (Yahoo Compatible)',0 |
;B+ Data area |
;caption db 'Yahoo Messanger for MenuetOS' |
caption db 'Messinger (Yahoo Compatible)' |
caption_end: |
;User / Password |
login_txt db 'STATUS: SESSION: ___.___.___.___' |
;VISIBLE |
;HIDDEN |
;VISIBLE |
;HIDDEN |
login_txt_end: |
user_txt db 'USER ID ->' |
user_txt_end: |