From eccd9035393779297e53ad8a5c1a4e80d98594ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 12 Dec 2015 11:13:14 +0100 Subject: [PATCH] Post #5:better support for CR/LF & ANSI esc seq --- A2OSX.BOOT.DSK | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes A2osX.S.txt | 2 +- DRV/CONSOLE.DRV.S.txt | 55 +++++++++++++++++++++++++++++++++++++++++- DRV/SSC.I.DRV.S.txt | 28 +++++++++++++-------- SBIN/GETTY.S.txt | 2 +- SBIN/LOGIN.S.txt | 47 ++++++++++++++++++++++++++---------- 7 files changed, 108 insertions(+), 26 deletions(-) diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK index ae03c55043b189467b3ac1cc9ffc667c8a72d75a..4f6865f5f5b82875ff0bb8a0c395a2851df73646 100644 GIT binary patch delta 3204 zcmeHKeNYqW8Gm<^KoUTfK$e{V<=u}fL<7lH=LGa_&X2ZWIc4n3jdQln>dA@7d46@O zjx$+1GDT!V!rlpJu$fq`OGze>b3ClX*s8G9GJDgH=~=I(qkm*t%j}JyhUgJ z2h-a8BG6jCoMgdW0K3Ywt#N180~3}VFUzIZ*^FSN5$M+!W)!XI&D#b0aB#Go%J_7a z6ZRz%hAVO7rur-t-)5JZwiFW^vHx@|w@N?U!lskP&uoce={n*~d`Oj;S*gA9>7bt0I3*IB_)#$ttaD z)RO3I8rRK;3#?Pf%o;+-Psq(oA`5yHgl)jZ#}f3B-s^0;FnWh=KibkGh{hz}xh`f9 z4N2VHBaFyx0-==^ z+RZK$BpojV!eHW)Wt?V7rEV?b)CUxQNBoK`ee&8a51jTW+%Y*fcX zc2d1h=_WNx2BBghcN$k0MciE7kcaCKAF*BYYuSw5(D;-_1_e_MjTT11(O_UQCUbC> z4bCB)?&v8}nqq`F%SJqClC4l^x8|gS-7AbHv&A~%cjMmQhYR7NLium$A<}o%=}|nI zMYe~FkXra$?tRAqrU$sTpwGgKsl@0G`{3x?cH|XFB~**t_#(po3=Ui! z_t|5gM?tI4=m}w?ptaxVu}IOL+%-Z5(OlrS43 zvlm8l7$udS^%Pev9RR;gseg}jCS^)j7Q(p#xgjmNwk8R)3nYmrB9VmPYV$>DrSyZm zfSuwiWl+P17mZCy38~h2h3v<|@8jOqiThVb^+6YCMd*nS$k^e?DN+oQ;!jDWm^@9! zcsWn>*+NFSMfBUcx@{4^ZK&JUjvWIdz^Q33Ig=`lr2OApBmGo}7zRp~N(@~ihruV; zNHwcNeFy`#NVkpJSs`}Y{Dv97ZOUg;KN5a|66D-EOY%yiHdhaiNbM)9UaLtjLl(lV z@R1Grp6OMcBV!ejK~fwd#Sha}{hW+hpk{*rB1AosT55O%ycL(UlQp^93WW+~t(x7k z0JlradR^X|qsW)QcbQ&lCae5o+K?X_>X5u?acpgRcui2tS6iy3$AKhiF3>v!QF*w11(7WbdpWf}>cwqh_I9Nd?UwMqFS-|?P+pTYHX z6a6M#%YBR8$_ngh7J%SmHu!`^?TeZYZld7{TE@fZ_9oEde-F{k8;E!e(8;8^M_V6# z!m6%t2eQXjhYZ6Gbw$UpBl?v6^eL;ECe?Y0AH%u9F*6r%qq@RxujFY}O39Q?NoW<#aA-TE_y!pu0+5Tvc~%z0hb)iW zrZ;GLGqb2l_>@LXj~Fb?r^#Y%#f(k>86pT5kLlbvrjw?gP}&ry?T^@hD^t4oBV?BX zKZch3^Q=07f`={z?qcOwy!@hIz;ffEk6N(WS1>YtL_k;z&%vAU75Y{B+cW@?GB{KU z!-T%CIU#$%Hd1PVJ*D~vg$e_g_r7RJ-}E@TVXkS{>K1pymB7%CXHdFo|AHQU<#=L&a%_P{jsJ4XBpp}p+r@n7f+ z_(Qf~n~HU&BlFXFs#SMV3mwRR+N$R0GtDFmXv*udmCtH>Z^zEvb(TF+v!v7x?-rJQua{u&33|8xwk4 zwo#ys0BxBTMRT|#(Fi`Szugx$qNWmS5?#v^3oVV$pTq45-!~ItGJ#G8fPQx*_yym# z#DeebM6@#rwlhgnhCm@U?pQdD4Pa4lVit|V;#v#iZ>sOR52PGbunWe=1T`a zY8t9|82DTaS`$((MqNdoi4aV7{HCGPG`AT$tBA$g`qh4f+G%kbd1=8z*oHJ3ooN F^G{ys&g1|9 delta 3130 zcmeHJeQXow8GqmNcZjili7!q_;`i=d2VO%7?M4DfEezDT%qi=@R419B#$Q>QK)cj3c&j>`ZA`VoV?*7rN+Br*5U&lnEwTDvNGot)@)C-m~et zPWyM-KRsD@&-*;T=i`0edwxD)-YU#nGe0&Od%Ue~>9n!m_`0{TMp|dW#%^ytBkeHl zFPq*oZFW?F4sQ#C!7YG}c^_eNKJ#4@bmST;*)6mIylVjZRWf&b*SMv&Z`^dfOo3xw zPuWLL@u&nTC1>33Hye+5YpqgSdyR8F{M50O{a`yLWmsx*r`yx8R7b9jU*eKxuPn*! z-XE*WLFzv2Ob_8?5#f!?}n@(QU$&#hnwBX3#xT4hhrny!z(RHYb;BIg%O+{!GoP6 zSlN)NoOi0`7=h@P*c6V<;sl5T84OJ0;=~9>f8#RsbFy zrdjMX60aEoR@Q6NVG^ShE)Ei4=KbqfvlWZ)T*vBN5C7V3q%=ni$~wN4Pj^mXt$Jb# zt0q*-3Kqpe>PX>P^^S*66RlYW@fx9Wo>G^lrt!MuHQX(xargo$Q#Ts|IhN=ZNTdR* zP~>ruEt{;dAskB*obK0Lt+ZvF;t)<yo9s+f6SZ((4kK_y{tQTdPof2BY0QDeV%w`%AQWS zP!=q5v?R#CDdR4>G8KOL&L>7gf+Ushovc~$_#k+?tP0%XYDcjvM8mc!Cax=+p^18KS%3agYT*O?$*wP+1~5el^ZSJaOkR zP|T_`InE4&_s1F4+^v3$!gMM`dtO;ChUkc4;RHR`L#uBKZ;=G=oMw2%9MC@Uqk~fD z)XFEHDD6NN5*_HTH0r&lR~2V6%Ts3<@#l(nqIS zD_^VrBC*YAa^dTfdD>F$rp7lG#Eo)zmb_IBl(arx;rX{rMhI`yBtNoORx4n#x^|_Cw?D zy$1#9TLVp0#Qjr9!Q30S_nETsH!EN=7d!tQ3&fHm`}NLlbPkzV3u|Xpe2??s7Q77u z5XJ^K9ymWT9CT-NclEynd)nS?n|f+BrY^ zfDI}rvecf!Wxmm=XS-rmmy@Mtnj6A`gHV#%NqKmAD;b)(B$m;?&;gE9DzptsrRG=c z+Dc{FoK6}f|1Ol=iHHjz6Drq;7qBddDa@0g^IJ9h!Vp2B981QMP)v#R3N_mL1$_+5 zqnfCh&}nT#r!_sF^phOxPUBCNMP2+pu}ghFK-=zI!0HSM9&Zzt5VC3$ObL)2!pD!_ zEEP+3K=!p*ynS3lTVs1%i-x2xv3OBVWQY1J=pNKUFIJH85i zPGtX$$o}v-k^N7J?AsRd{+Y6O-rNS0qp>I9&Q+bS0X2Z~fhY2Tr}O$W?eTy;POyh5 zO%}QNZ}umQWD3N`^WoL`#bDsU1Js`HeJU>&@`SJfx$nsHi@o2>FZRBePlpQVg?#!% zf&6#^wR)PYtztGG?9JuFBl*Q6MHSBUp3jGe9)jSZ=<5eylbHkwfE(ni>p6IKAEZtl zfX2@MV_AoOR-K9V9Du&h6!u;CoX7KOBj@v;8{5DQb{A}d2#s?M9N~-T{>Pwybl)V5 zz^Jwwy4D2h&<+SdH=rO5Eii)KLw`XQLQf)OQ!bQrqQtLBUv~=f<*s81!+19u7JeU& zwp@i@u-9?6W^oByK`wDwbnjIdYoXZ&8$5S%_|;$PgoBT=N_Ki$cBh= z9%(h{My`Kw16Q0!DwP1ejogB_gm2|bXp)KmQ(iXNsDIEc<0g6vexFraHQrsgnXcvf z$v+rn69y?`G34`#wcKK=fm4v?c;54BJ?E?Po(m2jZlQq-`kY!_%FAi)(T#Svi7NMx MyrV16&cfaQ1VTfgd0;X&9)Xft?&+CU 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 delta 14936 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 MSG.KMENUM A2osX.MLIQuit >LDAXI MSG.STAGE0OK jsr PrintCStrAX - >DEBUG + >DEBUGOA jsr MLI .DA #MLIQUIT diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 0371698e..2f474284 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -73,6 +73,7 @@ J.EscSeq .DA Esc.DispAttr m .DA 0 end of relocation *-------------------------------------- OPEN stz CURON + stz KeyRemapIdx stz bEscMode stz bEscModeCSI @@ -95,10 +96,50 @@ GETEVENT lda A2osX.TIMER16 and #A2osX.SCREENS.C is screen active? beq .9 - >SYSCALL SYS.GetKeyboardEvent + ldx KeyRemapIdx are we in remap mode ? + bne .4 +.11 >SYSCALL SYS.GetKeyboardEvent bcs .9 + + ldy #S.EVT.DATAHI + lda (pEvent),y + bne .8 + dey + lda (pEvent),y + + ldx KeyRemapped +.2 cmp KeyRemapped,x + beq .3 + dex + bne .2 + clc rts +.3 lda KeyRemappedIdx,x + tax + lda KeyRemappedTable,x + sta (pEvent),y + inx + stx KeyRemapIdx + clc + rts + +.4 lda KeyRemappedTable,x + bne .5 + stz KeyRemapIdx + bra .11 +.5 inx + stx KeyRemapIdx + ldy #S.EVT.DATALO + sta (pEvent),y + iny + lda #0 + sta (pEvent),y + lda #S.EVT.F.KEY + sta (pEvent) + clc +.8 rts + .9 lda #0 Error = no event sec rts @@ -546,6 +587,17 @@ SCROLLTOP .BS 1 SCROLLBOT .BS 1 CURON .BS 1 CURCHAR .BS 1 +*-------------------------------------- +KeyRemapIdx .BS 1 +KeyRemapped .HS 0508090A0D15 L,D,U,CR,R +KeyRemappedIdx .HS 050004080C0F +KeyRemappedTable .EQ * +KeyRemappedLEFT .HS 1B5B4400 esc[D +KeyRemappedDOWN .HS 1B5B4200 esc[B +KeyRemappedUP .HS 1B5B4100 esc[A +KeyRemappedCR .HS 0D0A00 crlf +KeyRemappedRGHT .HS 1B5B4300 esc[C +*-------------------------------------- bEscMode .BS 1 bEscModeCSI .BS 1 EscSeq .BS ESCSEQ.MAXLEN+1 @@ -553,6 +605,7 @@ EscSeqParamCnt .BS 1 EscSeqParam .BS 4 EscSeqInNum .BS 1 EscSeqCmds >PSTRING "mrKH" +*-------------------------------------- DEVINFO .DA #S.DEVINFO.TYPE.CHAR .DA #80 .DA #24 diff --git a/DRV/SSC.I.DRV.S.txt b/DRV/SSC.I.DRV.S.txt index 579e988d..b64af15f 100644 --- a/DRV/SSC.I.DRV.S.txt +++ b/DRV/SSC.I.DRV.S.txt @@ -16,6 +16,10 @@ BUF.MASK .EQ $1F *-------------------------------------- ZPTmpPtr1 .EQ ZPDRV *-------------------------------------- +* see this : +* http://mirrors.apple2.org.za/apple.cabi.net/Applications/Telcom/SSC.DRIVER/SSC.DRIVER.TXT +* About False read issue in SSC +*-------------------------------------- * SSC/ACIA I/O *-------------------------------------- SSC.REG.DIPSW1 .EQ $C081 R @@ -130,7 +134,9 @@ Dev.Detect sta hArgs asl asl sta DEVSLOTn0 - + clc + adc #SSC.REG.DATA+1 + sta DEV.DATA.BFFF >LDYA L.MSG.DETECT.OK >SYSCALL SYS.PSTROutYA >LDYA L.DEV.HEADER.NAME @@ -232,20 +238,20 @@ GETEVENT php *-------------------------------------- COUT php sei -* tay save char in Y + tay save char in Y - ldx DEVSLOTn0 +* ldx DEVSLOTn0 * lda SSC.REG.STATUS,x - bit #SSC.REG.STATUS.DCD+SSC.REG.STATUS.DSR +* bit #SSC.REG.STATUS.DCD+SSC.REG.STATUS.DSR * beq .9 -* ldx OUTBUF.CNT Buffer Empty? -* bne .10 + ldx OUTBUF.CNT Buffer Empty? + bne .10 -* bit #SSC.REG.STATUS.TDRE Register Empty ? -* beq .10 not empty, queue char + bit #SSC.REG.STATUS.TDRE Register Empty ? + beq .10 not empty, queue char -* tya yes, write directly to ACIA + tya yes, write directly to ACIA ldx DEVSLOTn0 sta SSC.REG.DATA,x @@ -339,8 +345,9 @@ IRQ ldx DEVSLOTn0 and #BUF.MASK tay + ldx DEV.DATA.BFFF lda OUTBUF,Y - sta SSC.REG.DATA,x + sta $BFFF,x ora #$80 sta $401 @@ -357,6 +364,7 @@ DRV.CS.END IDX .BS 1 DEVSLOT0n .BS 1 *DEVSLOTCn .BS 1 +DEV.DATA.BFFF .BS 1 DEVSLOTn0 .BS 1 INBUF.PTR .BS 1 INBUF.CNT .BS 1 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index bd6aca9b..37333d82 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -89,7 +89,7 @@ CS.INIT ldy #S.PS.hARGS sec .99 rts *-------------------------------------- -CS.RUN lda #13 try send a CR... +CS.RUN lda #12 try send a FF... >SYSCALL SYS.COutA Device Is Ready ? bcs .8 no..loop... diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index 7cd65cdc..fd759d8e 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -13,7 +13,7 @@ AUTO 6 *-------------------------------------- ZPPTR1 .EQ ZPBIN *-------------------------------------- -INPUT.BUFFER.SIZE .EQ 16 +INPUT.BufPtr.SIZE .EQ 16 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -132,24 +132,26 @@ CS.QUIT ldy #hSHELL *-------------------------------------- * PRIVATE *-------------------------------------- -INPUT.RESET ldy #INPUT.STATUS +INPUT.RESET ldy #INPUT.PassChar sta (pData),y lda #0 - ldy #INPUT.BUFFER + ldy #INPUT.BufPtr + sta (pData),y + ldy #INPUT.Status sta (pData),y rts *-------------------------------------- INPUT.CHARIN tax saver char... - ldy #INPUT.STATUS + ldy #INPUT.Status lda (pData),y bmi .9 - lda #INPUT.BUFFER + lda #INPUT.BufPtr clc adc pData sta ZPPTR1 lda pData+1 - adc /INPUT.BUFFER + adc /INPUT.BufPtr sta ZPPTR1+1 cpx #$20 Control Char? @@ -157,7 +159,7 @@ INPUT.CHARIN tax saver char... lda (ZPPTR1) - cmp #INPUT.BUFFER.SIZE Buffer full? + cmp #INPUT.BufPtr.SIZE Buffer full? beq .9 inc @@ -167,22 +169,40 @@ INPUT.CHARIN tax saver char... txa sta (ZPPTR1),y - ldy #INPUT.STATUS + ldy #INPUT.PassChar lda (pData),y bne .1 txa .1 >SYSCALL SYS.COutA rts -.2 cpx #$0D +.2 cpx #13 CR + bne .3 + ldy #INPUT.Status + lda (pData),y bne .9 - ldy #INPUT.STATUS + + inc + sta (pData),y + rts + +.3 cpx #10 LF + + bne .4 + ldy #INPUT.Status + lda (pData),y + beq .31 lda #$80 sta (pData),y + rts + +.31 + +.4 .9 rts *-------------------------------------- -INPUT.LINEIN ldy #INPUT.STATUS +INPUT.LINEIN ldy #INPUT.Status lda (pData),y asl CS if a line is in the buffer rts @@ -194,8 +214,9 @@ SHELL >PSTRING "SBIN/SHELL" .DUMMY .OR 0 DS.START -INPUT.BUFFER .BS INPUT.BUFFER.SIZE+1 -INPUT.STATUS .BS 1 +INPUT.BufPtr .BS INPUT.BufPtr.SIZE+1 +INPUT.Status .BS 1 +INPUT.PassChar .BS 1 hUSERNAME .BS 1 hPASSWORD .BS 1 hSHELL .BS 1