From 8faf470f4705ed60b9010b1bbaaab19aed003a44 Mon Sep 17 00:00:00 2001 From: jonnosan Date: Wed, 29 Sep 2010 06:41:00 +0000 Subject: [PATCH] git-svn-id: http://svn.code.sf.net/p/netboot65/code@286 93682198-c243-4bdb-bd91-e943c89aac3b --- client/v1541/v1541.prg | Bin 7164 -> 7288 bytes client/v1541/v1541.s | 115 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 106 insertions(+), 9 deletions(-) diff --git a/client/v1541/v1541.prg b/client/v1541/v1541.prg index df3f19d2dfd087770389e106b13894908c77442e..a9256f511e8c60b3d7941c3eb05b0bc5006f3ace 100644 GIT binary patch delta 3773 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 AL;wH) delta 3569 zcmb7HdvH|M8Q+`DgFM}6fCV%h&>BNxfk+_ESZ&o%ELYF~6%_PZr%GD2J~}>_(N!T7 zBWGQ_5l!RD?%ljjvgeZ6CMLr2T_`SWxJz!!A2RhpLMkR=HkavCDRn0O?%jl7JI=KG z$GPWx=R4o~{LZ)ME52PuglXB+vK;T0En2$R;c&29m8_c3_D1GV0yRzBn_0;&@*~f0 zm8)%HnbK<$7b^~un#B%Jkmo9zOyM*GhhJfOXe4+b?pwIOU>zLx0;_p-f^bmOe1T0NSC%=~4h1o)b92Ks^aZFh2 z2{=0U#panmh}~?ay2WCx@%_$y^*6%~<9y@$EEi|YQGW}tTNDr%2iQ$YfPB)?;UXIY zVou=pJJzgRL(0l>9jsF6MI-ruPL>Bb0~~R`X;;i+Ri4aIcXhF_+BN&6sQ6ceWFfw=x7%4a(A77Cu3L4JDb-@bU7!gnd?u|HT z3v6~vD^~mre{GQmf@tgJ;>#vy(xSy>H!LY%x~$^HpWJ%e?Ul5qu~(F|K&~|jtM_Q(^_n&1>IN-*uRT@O`?T;zd-|$!!am}bDkOFdP5F!o)cF}t zlXKH*Q!_#$$PH;{ic1-CsmX7l~J8qvw2V8=RA5+X}Oq*!iC zUzS;?uoSvpCzbM-=?~61+o+^Pe477PQGabTa*yVJDca{sB)K2XD4JcTxNU(c#vbNV zG;+2PO<1o>q(pAXSR>pj|0`o<*1f%v<2t>smu!&ln#P0|>(>dWF~h@yf@SKP#6r9T%pQ*ia5(moNF^28ZkJ)=*=Mxal` zF(6|)Inc((tN=Y_t)Grt0eUiS2S~mt_sY`Bp0A#anYG_E?51NBnsk zE4Kt%(Me9^ZMo}(2jow4mt#z>$t%g68RqSp;S^`e>+>Yxu-u!sBzIG<_x@hRQA?kX zlgH%?c_s4}gog)G%{=tr`M9_sJm56Y@(PJ;>`iRy#k+dHy!^7aQoaq#r!JdbO1nt$ zUUFxXMAmU1UTMO4$3OWlEheBIxhs~ApE-Ys<>P0KOk9;hjr_3djVrcd<{CS>3K%?M20+Kgh#oc>RBbsDYG!_anJ1lHu#}pffJxsvpoCu>iXh*;GDB*oaE~lAcAH=HaPqJE^ z7#n0}`L-jt+z;N1u0Z4j_`5IqbM}Ao$1~xOtsX;`>33SkEZtR0aRGXk=3o)z9%Zpft+cf$og*Fwobdyo3YwB18uq zk@uk97iF%}!(gN`hv|%TLw#NJXrJqIb{Bm+$`8wh(~HXYgS)zbz7}oe5vX?1+GyL` z?&=($Fia5d--&wt7T%-UNxZkMk+)30%2TLLRbL(UT2?nVWW^vE0_(wkM^pXw20snz zAduZ*(;~mCse6*-0Z>m(lCd&VOPOYtl4I|6T+4TAu_Z1>?F zfO`6XEZB>+Z80ptGd`y{y~{Ew#h7mepf{lTPXPM+H9Ij?@m9GzDFaKQ3)P|Q8GoES zZ69mY{2zmL_#^AEdGYW^7kx8U^Vc-_%^3xrcf(B~G^VMM_F_D{BG{ zm`hyM#qx2m;+0}L#g$!rj~0)DaWAGLegupvW`kh56$?R{3Sgv8!{*kC1doDx1gMRR z+^->0dN9NEG}r;X)DSDkm!q;tDc#95bbmJu1^4(f51NN<7mk-{&sMdayV0RzLkkFOlS(?#HvR*k6fyw?;{woI2|f z;Y<0^S%ovlut!WJfG0p5gJkoAWz{GLXIsY$T#&#?3Q@P(;*N?5{jom0{%sx5>*!ay& zN*JE_SweDn?CMQ9F7L+OQesiWX0Rk%sn-$xqDg76iFyPKj{0 zyk^eAAG01F=nn_`>y>_Nl@q~!acd7Q&20Rqq4c|%qV(ev&V&6}&s%$r2Q6NEixpUZ n8n()Z=G>Nh$DNg{*R3U$RaL92a%Jb0k7oWRNQyOaeBAMGs!UbT diff --git a/client/v1541/v1541.s b/client/v1541/v1541.s index 3331adc..6b4b3bb 100644 --- a/client/v1541/v1541.s +++ b/client/v1541/v1541.s @@ -36,13 +36,16 @@ SERVER_PORT=1541 .importzp copy_dest .export keep_alive_counter pptr=copy_src - +IERROR=$300 CINV=$314 ILOAD=$330 ISAVE=$332 + FNLEN = $B7 FNADDR = $BB - +CHRGOT=$79 +TXTPTR=$7A +MEMSIZ = $37 ;highest address used by BASIC .import __CODE_LOAD__ .import __CODE_RUN__ .import __CODE_SIZE__ @@ -213,6 +216,9 @@ relocate: ldax #irq_handler sei stax CINV + +; jsr install_wedge + @done: jsr swap_basic_in lda #0 @@ -267,6 +273,64 @@ __print: @done_print: rts +install_wedge: + ldax #wedge_start + stax copy_src + sec + lda MEMSIZ + sbc #wedge_length + sta MEMSIZ+1 + sta copy_dest+1 + sta IERROR+1 + ldax #wedge_length + jsr __copymem + jmp $a644 ;NEW + +wedge_start: + + + ;new error handler + cpx #$0b ; is it a SYNTAX ERROR? + beq @syntax_error; yes, jump to command test +@exit: + jmp $e38b ;nope, normal error handler + +@syntax_error: + + jsr CHRGOT ;read current character in buffer again + bcc @exit + cmp #$b1 ;is current character a > token? + bne @exit ;nope, normal error handler +@got_it: + ldy #0 + lda #'>' + sta (TXTPTR),y ;replace token with > symbol again +@scan_command: + lda (TXTPTR),y ; + beq @end_of_command + cmp #':' + beq @end_of_command + iny + bne @scan_command +@end_of_command: + sty FNLEN ;file name length + lda TXTPTR ;start of filename + sta FNADDR + lda TXTPTR+1 ;start of filename + sta FNADDR+1 + lda #$2 + sta $BA ;current device number + ;jmp (ILOAD) + jsr load_handler + jmp $A474 ;READY prompt + + +wedge_length=*-wedge_start .code @@ -277,6 +341,8 @@ load_dev_2: beq @do_disks cmp #'>' beq @do_command + cmp #'#' + beq @do_insert @done: clc @@ -289,14 +355,16 @@ load_dev_2: sta cmd_buffer-1,y dey bne @copy_cmd + + ldy FNLEN lda #$0D sta cmd_buffer-1,y lda #0 sta cmd_buffer,y - +@send_command_buffer: ldax #cmd_buffer - jmp@send_string_show_list + jmp @send_string_show_list @do_disks: ldax #@cmd_dsks @@ -307,6 +375,36 @@ load_dev_2: jmp @done @cmd_dsks: .byte "DISKS 22",$0d,$0 + +@do_insert: + + ldx #0 +@copy_insert: + lda @cmd_insert,x + beq @end_insert + sta cmd_buffer,x + inx + bne @copy_insert +@end_insert: + ldy #1 +: + lda (FNADDR),y + sta cmd_buffer,x + iny + inx + cpy FNLEN + + bne :- + + lda #$0D + sta cmd_buffer,x + lda #0 + sta cmd_buffer+1,x + jmp @send_command_buffer + +@cmd_insert: .byte "INSERT ",0 + + @error: ldax #transmission_error jsr print @@ -324,11 +422,10 @@ show_list: lda $91 ; look for STOP key cmp #$7F beq @done - lda #5 ;wait for max 5 seconds + lda #2 ;wait for max 2 seconds jsr getc bcc @got_data - ldax #timeout_error - jmp print + rts @got_data: cmp #$03 ;ETX byte (indicating end of page)? beq @get_user_input @@ -533,7 +630,7 @@ old_irq_vector: underneath_basic: .res 1 .segment "TCP_VARS" -csip_stream_buffer: .res 1500 +csip_stream_buffer: .res 1400 cmd_buffer: .res 100 user_abort: .res 1 getc_timeout_end: .res 1 @@ -544,7 +641,7 @@ keep_alive_counter: .res 1 .data continue_cmd: .byte $0D,0 stop_cmd: .byte "S",0 -timeout_error: .byte "TIMEOUT ERROR",13,0 + transmission_error: .byte "TRANSMISSION ERROR",13,0 ;-- LICENSE FOR v1541.s --