diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f4c5d38e..7521b6cc 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 0aa91f16..9f3426dd 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -312,7 +312,7 @@ CS.RUN ldy #S.PS.hStdIn jsr MAC.ReadLine bcc .2 - cmp #E.NODATA + cmp #E.EMPTYKEY bne .9 >DEC.G MAC.Depth diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 8e7e54d6..93e1858d 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -19,6 +19,16 @@ PG.SIZE .EQ 23 ZS.START ZPPTR1 .BS 2 ZPBufPtr .BS 2 +ArgCount .BS 1 +hFile .BS 1 +LineCount .BS 1 +LineNum .BS 2 +bHelp .BS 1 +bLineNum .BS 1 +bPage .BS 1 +bEscCodes .BS 1 +ArgIndex .BS 1 +hBuf .BS 1 ZS.END .ED *-------------------------------------- @@ -32,7 +42,7 @@ CS.START cld .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize - .DA #16 Stack Size + .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- @@ -54,7 +64,8 @@ CS.INIT clc rts *-------------------------------------- CS.RUN -.1 >INC.G ArgCount +.1 inc ArgCount + lda ArgCount >SYSCALL ArgV bcs .7 @@ -86,7 +97,7 @@ CS.RUN sta (pData),y bra .1 -.4 >LDA.G hFile +.4 lda hFile bne .99 >LDYA ZPPtr1 @@ -95,13 +106,14 @@ CS.RUN bra .1 scan for any other args -.7 >LDA.G bHelp +.7 lda bHelp beq .8 + .71 jsr .99 lda #0 rts -.8 >LDA.G hFile +.8 lda hFile bne .80 ldy #S.PS.hStdIn @@ -120,8 +132,7 @@ CS.RUN bcs .9 >STYA ZPBufPtr - txa - >STA.G hBuf + stx hBuf >PUSHBI 0 >LDYA L.MSG.Init @@ -130,11 +141,13 @@ CS.RUN CS.RUN.LOOP jsr CS.RUN.GETLINE bcs .9 -.1 >INCW.G LineNum +.1 inc LineNum + bne .11 + inc LineNum+1 - >LDA.G LineCount +.11 lda LineCount bne .2 - >LDA.G bPage + lda bPage beq .2 lda #C.FF @@ -142,11 +155,11 @@ CS.RUN.LOOP jsr CS.RUN.GETLINE .2 jsr CS.RUN.PRINT - >INC.G LineCount + inc LineCount + lda LineCount cmp #PG.SIZE bne CS.RUN.LOOP - lda #0 - sta (pData),y + stz LineCount jsr CS.RUN.PAUSE bcc CS.RUN.LOOP @@ -167,7 +180,7 @@ CS.RUN.OPEN pha pla >SYSCALL FOpen bcs .9 - >STA.G hFile + sta hFile .9 rts *-------------------------------------- @@ -203,9 +216,11 @@ CS.RUN.PAUSE >PUSHBI 0 bra .90 -.5 >INCW.G LineNum - - jsr CS.RUN.PRINT +.5 inc LineNum + bne .6 + inc LineNum+1 + +.6 jsr CS.RUN.PRINT bra CS.RUN.PAUSE @@ -222,7 +237,7 @@ CS.RUN.ERASE >PUSHBI 0 >SYSCALL fprintf rts *-------------------------------------- -CS.RUN.GETC >LDA.G hFILE +CS.RUN.GETC lda hFILE bne .1 ldy #S.PS.hStdErr @@ -235,7 +250,7 @@ CS.RUN.GETC >LDA.G hFILE *-------------------------------------- CS.RUN.GETLINE >PUSHWI 256 >PUSHW ZPBufPtr - >LDA.G hFile + lda hFile bne .1 ldy #S.PS.hStdIn @@ -244,16 +259,16 @@ CS.RUN.GETLINE >PUSHWI 256 .1 >SYSCALL fgets rts *-------------------------------------- -CS.RUN.PRINT >LDA.G bLineNum +CS.RUN.PRINT lda bLineNum bpl .1 - >PUSHW.G LineNum + >PUSHW LineNum >PUSHBI 2 >LDYA L.MSG.NUMLINE >SYSCALL printf bcs .9 -.1 >LDA.G bEscCodes +.1 lda bEscCodes bmi .2 >LDYA ZPBufPtr @@ -270,12 +285,12 @@ CS.RUN.PRINT >LDA.G bLineNum >SYSCALL printf .9 rts *-------------------------------------- -CS.QUIT >LDA.G hBuf +CS.QUIT lda hBuf beq .1 >SYSCALL FreeMem -.1 >LDA.G hFILE +.1 lda hFILE beq .2 >SYSCALL FClose @@ -306,16 +321,6 @@ MSG.PauseErase .AZ "\r\e[2K" .DUMMY .OR 0 DS.START -ArgCount .BS 1 -hFile .BS 1 -LineCount .BS 1 -LineNum .BS 2 -bHelp .BS 1 -bLineNum .BS 1 -bPage .BS 1 -bEscCodes .BS 1 -ArgIndex .BS 1 -hBuf .BS 1 DS.END .ED *-------------------------------------- diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index d7187045..89209916 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -59,7 +59,7 @@ IO.Reset.In >LDA.G IO.hIn .8 clc IO.Reset.In.RTS rts *-------------------------------------- -IO.Pipe.Out >LDYAI 256 +IO.Pipe.Out >LDYAI 512 >SYSCALL pipe bcs IO.Reset.In.RTS >STA.G IO.hPipe diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 1a4d45e8..bd1d4ee5 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -109,6 +109,7 @@ CS.START cld *-------------------------------------- L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.PROMPT .DA MSG.PROMPT +L.MSG.PROMPTCRLF .DA MSG.PROMPTCRLF L.MSG.TRACE .DA MSG.TRACE L.MSG.ECHOCRLF .DA MSG.ECHOCRLF L.MSG.BATCHERR .DA MSG.BATCHERR @@ -339,7 +340,7 @@ CS.RUN.INTERACTIVE bpl .1 >PUSHBI 0 - >LDYA L.MSG.ECHOCRLF + >LDYA L.MSG.PROMPTCRLF >SYSCALL printf bcs .9 @@ -581,7 +582,8 @@ ToUpperCase cmp #'a' CS.END *-------------------------------------- MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n" -MSG.PROMPT .AZ "\e[7h$ " +MSG.PROMPT .AZ "\e[7h$ " Enable Line Wrap +MSG.PROMPTCRLF .AZ "\e[7l\r\n" Disable Line Wrap MSG.TRACE .AZ ">%s\r\n" MSG.BATCHERR .AZ "^\r\nLine #%D:" MSG.ERROR .AS "[$%h]:%S." diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 74fc84bc..7f4bf66f 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -334,7 +334,7 @@ READ php lda L91C96.2.IST,x and #L91C96.2.IST.RCV bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -373,10 +373,10 @@ READ php ply - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr - stx .8+1 + phx phy ldy #S.IOCTL.BUFPTR+1 @@ -415,7 +415,7 @@ READ php .4 lda #L91C96.2.MMUCR.REMREL sta L91C96.2.MMUCR,x -.8 lda #$ff hMem +.8 pla hMem plp clc @@ -464,7 +464,7 @@ WRITE php dey bne .2 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 8e9f00c4..1b205205 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -374,7 +374,7 @@ READ php and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -400,7 +400,7 @@ READ php pla - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr @@ -488,7 +488,7 @@ WRITE php dey bne .1 -.9 lda #MLI.E.EOF +.9 lda #E.NODATA plp sec diff --git a/DRV/X.U2.DRV.S.txt b/DRV/X.U2.DRV.S.txt index f8673453..92b3f36d 100644 --- a/DRV/X.U2.DRV.S.txt +++ b/DRV/X.U2.DRV.S.txt @@ -387,7 +387,7 @@ READ php ora W5100.DR,x LO bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -432,11 +432,11 @@ READ php sty RXTX.Size .FIN - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr - stx .8+1 + phx phy ldy #S.IOCTL.BUFPTR+1 @@ -529,7 +529,7 @@ READ php lda #W5100.AR.S0.CR.RCVD sta W5100.DR,x -.8 lda #$ff SELF MODIFIED hMem + pla hMem plp clc @@ -569,7 +569,7 @@ WRITE php sbc RXTX.Size+1 bcs WRITE.1 - lda #MLI.E.EOF + lda #E.NODATA plp sec diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 98989454..51a95dea 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -6,7 +6,7 @@ K.ENV.SIZE .EQ 256 *-------------------------------------- K.MEM.ALIGN .EQ 16 K.MEM.nALIGNm1 .EQ $F0 -*K.MEM.ALIGN .EQ 64 +*K.MEM.ALIGN .EQ 64 *K.MEM.nALIGNm1 .EQ $C0 *-------------------------------------- K.IRQDEV.MAX .EQ 4 @@ -94,6 +94,8 @@ A2osX.SYSCALL2 .EQ $E200 * Kernel ERROR CODES : $60->$7F * Lib ERROR CODES : $80->$BF *-------------------------------------- +E.NODATA .EQ $FF No Data +*-------------------------------------- E.OOM .EQ $7F Out Of Memory Error E.OOH .EQ $7E Out Of Handle Error E.INVH .EQ $7D Invalid Handle @@ -110,7 +112,7 @@ E.INUM .EQ $73 Invalid Numerical E.NOKEY .EQ $6F Undefined Key E.DUPKEY .EQ $6E Duplicate Key -E.NODATA .EQ $6D No Data +E.EMPTYKEY .EQ $6D No Data for this key E.DATALEN .EQ $6C Data Length Mismatch E.IPWDDB .EQ $68 Invalid PWD database @@ -129,6 +131,8 @@ C.VT .EQ 11 C.FF .EQ 12 C.CR .EQ 13 C.FS .EQ 21 +C.S0 .EQ 24 +C.S1 .EQ 25 C.ESC .EQ 27 C.SPACE .EQ 32 C.COLON .EQ 58 diff --git a/INC/NET.TELNET.I.txt b/INC/NET.TELNET.I.txt index 3603d6e1..e6af6b76 100644 --- a/INC/NET.TELNET.I.txt +++ b/INC/NET.TELNET.I.txt @@ -3,10 +3,12 @@ PREFIX AUTO 4,1 *-------------------------------------- * https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/arpa/telnet.h +* https://web.maths.unsw.edu.au/~lafaye/CCM/internet/telnet.htm *-------------------------------------- TCP.PORT.TELNET .EQ 23 *-------------------------------------- SE .EQ 240 $F0 +DM .EQ 242 $F2 SB .EQ 250 $FA SB.IS .EQ 0 SB.SEND .EQ 1 diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt index 859390c1..cd73174a 100644 --- a/LIB/LIBCRYPT.S.txt +++ b/LIB/LIBCRYPT.S.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 97f59e89..56f03059 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -404,9 +404,8 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen jsr TCP.OUT.SendOptA -.8 lda #0 - tay eof=true, exit with CC,Y,A = 0 - clc +.8 lda #E.NODATA + sec .99 rts *-------------------------------------- * In: @@ -552,9 +551,8 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen bcs SKT.AddDataToSktOut - lda #0 Not enough room in Q,no data transfered - tay exit with CC,Y,A = 0 - clc + lda #E.NODATA Not enough room in Q,no data transfered + sec .99 rts *-------------------------------------- * Src : ZPDataInPtr/ZPDataInLen diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 2352e97f..96fc524a 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -178,7 +178,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYA BIN.CmdLine ldx #SYS.LoadFile - jsr K.SYSCALL.GoB BANK1!!! + jsr K.SYSCALL2.BANK BANK1!!! bcs BIN.Load.Cleanup.RTS Error Loading file stx BIN.hMem save hMem @@ -220,7 +220,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYA BIN.CmdLine get back bin path ldx #SYS.strdup make a copy of this string - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .98 lda BIN.hMem Keep X=new string hMem diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 4cf7ed37..6dcc348a 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -529,7 +529,7 @@ CORE.PSFree sta .10+1 Save PS ID txa ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK .10 lda #$ff Self Modified diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 9c24c2a2..9034b374 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -156,6 +156,8 @@ S.DCB.TTY.MODE .EQ 2 S.DCB.TTY.MODE.ESC .EQ 2 S.DCB.TTY.MODE.CSI .EQ 4 S.DCB.TTY.MODE.IAC .EQ 6 +S.DCB.TTY.MODE.G0 .EQ 8 +S.DCB.TTY.MODE.G1 .EQ 10 S.DCB.TTY.CH .EQ 3 S.DCB.TTY.CV .EQ 4 S.DCB.TTY.SCROLLTOP .EQ 5 diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 8928867a..dfdc8966 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -579,8 +579,7 @@ K.ReadDir.ConvertTime lda ZPPtr3+1 adc #0 ldx #SYS.PTime2Time BANK2 - jsr K.SYSCALL.GoB - rts + jmp K.SYSCALL2.BANK */------------------------------------- * # CloseDir * ## C diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index add65d55..0a9044aa 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -119,7 +119,7 @@ K.ExpandStr stz .88+1 Reset Intermediate string... >LDYAI K.Buf256 ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 stx .88+1 save this as temp string, in case of recurse @@ -233,7 +233,7 @@ ENV.Search.YA >STYA .4+1 .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .1 Failed...retry next path... lda K.S.STAT+S.STAT.P.TYPE diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 7a78261c..4258f7b8 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -129,7 +129,7 @@ GP.SysCall dec IRQ.InKernel tay pla - jsr K.SYSCALL.Go + jsr K.SYSCALL2 bcc .2 no error quit... tax CS,A=0 ? diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 0d04240d..89f2f2db 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -312,7 +312,7 @@ IO.CLOSE.NOD ldx #2 * sec rts */-------------------------------------- -* # read (BLOCKING) +* # read * ## C * `int read(hFD fd, void *buf, int count);` * ## ASM @@ -342,7 +342,7 @@ IO.Read.I lda (pFD) #S.FD.T .DA IO.READ.SSOCK .DA IO.READ.PIPE */-------------------------------------- -* # write (BLOCKING) +* # write * ## C * `int write(hFD fd, const void *buf, int count);` * ## ASM @@ -389,40 +389,28 @@ IO.WRITE.REG ldx #MLIWRITE >LDYA K.MLI.PARAMS+6 .9 rts *-------------------------------------- -* (pStack)+2 count -* (pStack)+0 buf -*-------------------------------------- IO.READ.CDEV ldx #IOCTL.READ .HS 2C BIT ABS *-------------------------------------- IO.WRITE.CDEV ldx #IOCTL.WRITE - ldy #3 - -.1 lda (pStack),y - sta K.S.IOCTL+S.IOCTL.BUFPTR,y - dey - bpl .1 - + >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + >PULLW K.S.IOCTL+S.IOCTL.BYTECNT jsr K.IOCTL.GetPDRV >LDYAI K.S.IOCTL jsr K.IOCTL.pDrvJmp - bcc .8 - tay CS, A=0 ? - bne .9 no, I/O error + bcs .9 + >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - rts BLOCKING I/O - -.8 >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - -.9 >RET 4 +.9 rts *-------------------------------------- IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE .HS 2C BIT ABS *-------------------------------------- IO.READ.SSOCK ldy #S.FD.SSOCK.READ + lda (pFD),y tax Function Offset in LIB @@ -433,25 +421,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ lda IO.hFD -.1 jsr $FFFF SELF MODIFIED - bcs .9 I/O error - - phy - ply - bne .9 - - tax - bne .9 - - dec pStack no data transfered, CC, Y,A = 0 - dec pStack - dec pStack - dec pStack keep buf/count on stack - sec BLOCKING I/O -.9 rts -*-------------------------------------- -* (pStack)+2 count -* (pStack)+0 buf +.1 jmp $FFFF SELF MODIFIED *-------------------------------------- IO.READ.PIPE ldy #S.FD.PIPE.Used+1 @@ -466,7 +436,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 jmp IO.READ.PIPE.EOF Remote PS closed the Pipe -.11 jmp IO.READ.PIPE.BLK +.11 jmp IO.READ.PIPE.NODATA .10 >PULLW .3+1 get buf @@ -506,6 +476,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 sty .2+1 ldy #S.FD.PIPE.Tail+1 +* clc adc (pFD),y sta .2+2 @@ -591,13 +562,11 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 IO.READ.PIPE.EOF lda #MLI.E.EOF + .HS 2C BIT ABS +IO.READ.PIPE.NODATA + lda #E.NODATA sec - >RET 4 - -IO.READ.PIPE.BLK - lda #0 BLOCKING I/O - sec - rts + >RET 4 *-------------------------------------- * (pStack)+2 count * (pStack)+0 buf @@ -618,7 +587,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S ldy #3 sbc (pStack),y - bcc IO.READ.PIPE.BLK not enough room in PIPE + bcc IO.READ.PIPE.NODATA not enough room in PIPE ldy #S.FD.PIPE.Free+1 sta (pFD),y @@ -627,7 +596,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S sta (pFD),y store new Free >PULLW .2+1 get buf - + >PULLA get cnt lo sta .80+1 pha diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 2717aed5..2a8c9e10 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -417,10 +417,10 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA 0 .DA 0 *-------------------------------------- -K.SYSCALL.Go bit K.SYSCALL.BANK,x Get Target BNK +K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK bpl K.SYSCALL.JMP 0, E000, no BNK change -K.SYSCALL.GoB sta .7+1 +K.SYSCALL2.BANK sta .7+1 lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2 cmp K.SYSCALL.BANK,x beq .7 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 1a87ce98..ecc3019b 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -273,7 +273,7 @@ K.FreeMem.ERR phx >LDYAI K.FreeMem.MSG .1 ldx #SYS.printf - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK plx sec @@ -536,7 +536,7 @@ K.FreeStkObj ldx #SYS.FreeMem * X = hMem of Loaded Object in AUX mem *\-------------------------------------- K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .99 sty .81+1 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index aff9ba04..00a96c3e 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -144,7 +144,7 @@ PS.CreateChild ldx #0 jsr K.GetMemPtr ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 jsr PS.SetMemOwner Set Ownership @@ -230,7 +230,7 @@ PS.Load ldy #$ff >PUSHWI K.S.STAT >LDYA PS.ArgV found /, some path specified, no search ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcc .6 REAL path in K.Buf256 .99 rts @@ -308,7 +308,7 @@ PS.Load.SCRIPT ldx #$ff .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs PS.Load.RTS lda K.S.STAT+S.STAT.P.TYPE @@ -415,7 +415,7 @@ PS.LoadGetHeader >PUSHBI O.RDONLY >LDYAI K.IOBuf ldx #SYS.fopen - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 sta .1+1 @@ -423,13 +423,13 @@ PS.LoadGetHeader >PUSHWI K.IOBuf+128 .1 lda #$ff SELF MODIFIED ldx #SYS.fread - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK php pha lda .1+1 ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK pla plp .9 rts diff --git a/SYS/KERNEL.S.PWD.txt b/SYS/KERNEL.S.PWD.txt index 484d60f4..42811535 100644 --- a/SYS/KERNEL.S.PWD.txt +++ b/SYS/KERNEL.S.PWD.txt @@ -74,7 +74,7 @@ PWD.Store lda PWD.DBPtr >PUSHBI O.WRONLY+O.CREATE >LDYAI PWD.FILE ldx #SYS.FOpen - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcc .1 pha @@ -91,7 +91,7 @@ PWD.Store lda PWD.DBPtr >PUSHYA lda .7+1 ldx #SYS.FWrite - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .2 jsr .7 @@ -106,7 +106,7 @@ PWD.Store lda PWD.DBPtr .7 lda #$ff ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK .8 lda #$ff jsr K.freemem diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 4455daa4..94bb68c3 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -82,7 +82,7 @@ SLIST.GetData jsr SLIST.Select inc ZPSListDataLen+1 bra .2 -.99 lda #E.NODATA +.99 lda #E.EMPTYKEY sec .9 rts diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 07ccf64a..b5bec783 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -329,7 +329,7 @@ K.MkNod.I ldx #2 >LDYA ZPPtr1 ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 txa diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 845602a6..e2c341a7 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1,16 +1,10 @@ NEW -PREFIX -AUTO 4,1 -*-------------------------------------- -*K.PrintF.PadL .BS 1 -*K.PrintF.PadC .BS 1 -*HEXBUF .BS 4 -*BCDBUF .BS 5 5, enough to handle 10 digits (32bits) + AUTO 3,1 *-------------------------------------- HEXBUF .EQ FAC K.PrintF.PadL .EQ FAC+4 K.PrintF.PadC .EQ FAC+5 -BCDBUF .EQ ARG +BCDBUF .EQ ARG 5, enough to handle 10 digits (32bits) HEXBUF.Signed .EQ ARG.SIGN */-------------------------------------- * # putchar (BLOCKING) @@ -29,14 +23,16 @@ K.PutChar >PUSHA character ldy #S.PS.hStdOut lda (pPs),y jsr K.FPutC - bcc .8 - - tay - bne .8 - - >RET 1 - -.8 rts + bcc K.PutChar.RTS + + tay E.NODATA + bpl K.PutChar.RTS + + inc 0 = BLOCKING + +K.PutChar.RET1 inc pStack + +K.PutChar.RTS rts */-------------------------------------- * # fputc (BLOCKING) * Print A (char) to hFILE @@ -50,22 +46,26 @@ K.PutChar >PUSHA character * ## RETURN VALUE * CC = success *\-------------------------------------- -* (pStack)+0 character -*-------------------------------------- K.FPutC jsr PFT.CheckNodeA - bcs .8 - + bcs K.PutChar.RET1 + lda (pStack) character sta K.IOBuf - ldy #1 write 1 byte - jsr K.FPutC.Y - bcc .8 - tay - bne .8 + lda #0 + >PUSHA + inc write 1 byte + >PUSHA + + >PUSHWI K.IOBuf buf + jsr IO.Write.I + bcc K.PutChar.RET1 pop char... + tay E.NODATA + bpl K.PutChar.RET1 + + inc 0 = BLOCKING + sec rts - -.8 >RET 1 */-------------------------------------- * # puts (BLOCKING) * Write Str to StdOut, appends '\r\n' @@ -78,36 +78,49 @@ K.FPutC jsr PFT.CheckNodeA * ## RETURN VALUE * CC = success *\-------------------------------------- -K.PutS >PUSHYA - +K.PutS >STYA ZPPtr2 + + ldy #0 + +.1 lda (ZPPtr2),y + beq .2 + sta K.IOBuf,y + iny + bne .1 + +.9 lda #E.BUF + sec + rts + +.2 lda #C.CR + sta K.IOBuf,y + iny + beq .9 + + lda #C.LF + sta K.IOBuf,y + + iny + beq .9 + + lda #0 + sta K.IOBuf,y + + >PUSHWI K.IOBuf + ldy #S.PS.hStdOut lda (pPs),y - jsr K.FPutS - bcs K.PutS.RTS - - lda #C.CR - sta K.IOBuf - lda #C.LF - sta K.IOBuf+1 - - ldy #2 write 2 bytes - -K.FPutC.Y lda #0 - - >PUSHYA count - >PUSHWI K.IOBuf buf - jsr IO.Write.I - bcc K.PutS.RTS + bcc .99 tay - bne K.PutS.RTS + bpl .99 - >RET 4 pop buf,count but keep char - -K.PutS.RTS rts + inc 0 = BLOCKING +* sec +.99 rts */-------------------------------------- * # fputs (BLOCKING) -* Write Str to FILE +* Write Str to hFILE * ## C * `int fputs (hFILE stream, const char * str );` * ## ASM @@ -121,23 +134,42 @@ K.PutS.RTS rts K.FPutS jsr PFT.CheckNodeA set IO.hFD bcs .9 - >PULLYA Get String - >STYA ZPPtr2 Save Buffer - ldx #SYS.strlen Get String len in Y,A - jsr K.SYSCALL.GoB + lda (pStack) + sta ZPPtr2 Get String + + ldy #1 + lda (pStack),y + sta ZPPtr2+1 + +* ldy #0 + dey + ldx #0 + +.1 lda (ZPPtr2),y + beq .2 + iny + bne .1 + inx + bra .1 + +.2 txa + >PUSHA push len HI + + tya + >PUSHA push len LO + + >PUSHW ZPPtr2 - >PUSHYA push len - >PUSHW ZPPtr2 push buffer jsr IO.Write.I bcc .8 tay - bne .8 + bpl .9 - >RET 4 + inc 0 = BLOCKING .8 rts -.9 >RET 2 +.9 >RET 2 pop str */-------------------------------------- * # PrintF (BLOCKING) * # FPrintF (BLOCKING) @@ -361,9 +393,11 @@ K.PrintF.1 stz PrintF.Cnt jsr K.FWrite bcc .81 tay - bne .99 + bpl .99 - >RET 4 + inc 0 = BLOCKING +* sec + rts .80 lda #0 Writing to buffer, append \0 ldy PrintF.Cnt @@ -812,7 +846,7 @@ K.FGetS jsr PFT.CheckNodeA bcs .9 lda (pFD) - bne K.FGetS.Special + bra K.FGetS.Special * clc lda (pStack) @@ -906,17 +940,17 @@ K.FGetS.Special lda (pStack) .3 jsr K.GetC.I bcc .2 another char... - + .4 tay - bne .9 I/O error - + bpl .9 I/O error + lda ZPPtr2 sta (pStack) s - + lda ZPPtr2+1 ldy #1 sta (pStack),y s - + lda ZPPtr1 eor #$ff * sec @@ -929,11 +963,11 @@ K.FGetS.Special lda (pStack) adc #0 iny sta (pStack),y !(n+2) - - lda #0 BLOCKING I/O + + lda #0 BLOCKING sec rts - + .8 lda #0 sta (ZPPtr2) terminate string clc @@ -967,17 +1001,18 @@ K.GetChar ldy #S.PS.hStdIn *\-------------------------------------- K.GetC jsr PFT.CheckNodeA bcs K.GetC.RTS - + K.GetC.I >PUSHWI 1 >PUSHWI K.IOBuf - + jsr IO.READ.I bcc .8 tay - bne K.GetC.RTS I/O error - - >RET 4 BLOCKING I/O - + bpl K.GetC.RTS I/O error + + inc 0 = BLOCKING + rts + .8 lda K.IOBuf K.GetC.RTS rts @@ -1008,7 +1043,7 @@ K.GetC.RTS rts * A = Number of arguments filled. *\-------------------------------------- K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format - + stz .5+1 reset LStack Ptr stz .80+1 rest Arg processed @@ -1017,18 +1052,18 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format cmp #'%' Escape ? beq .2 - + cmp #' ' Space ? beq .12 - + cmp (ZPPtr2) Same char in string? bne .9 - + inc ZPPtr2 bne .1 inc ZPPtr2+1 bra .1 - + .12 inc ZPPtr2 Space.... bne .14 inc ZPPtr2+1 @@ -1036,28 +1071,28 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format .14 cmp (ZPPtr2) another one ? beq .12 bne .1 - + .2 jsr MEM.GetCharPtr1 Get specifier after % beq .9 unexpected End of format after "%" ? ldx #K.SScanFJMP-K.SScanFTBL-2 - + .3 cmp K.SScanFTBL,x beq .4 dex dex bpl .3 - + .9 jsr .8 lda #MLI.E.EOF sec rts - + .4 jsr .5 bcs .9 out of Ptr on stack - + bra .1 - + .8 lda pStack sec ByteCnt byte adc (pStack) ... ByteCnt @@ -1069,12 +1104,12 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format .5 lda #$FF SELF MODIFIED LStack Ptr cmp (pStack) beq .99 CS - + tay iny lda (pStack),y sta ZPPtr3 - + iny lda (pStack),y sta ZPPtr3+1 get VAR Ptr @@ -1110,11 +1145,11 @@ K.SScanF.H lda K.SScanFTBL+1,x Get VAR size pha jsr STDLIB.GetHex - + K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed - + .1 ply get back VAL size - + .2 lda STDLIB.32-1,y dey sta (ZPPtr3),y @@ -1134,7 +1169,7 @@ K.SScanF.S ldy #$ff bne .1 .2 lda #0 add \0 to param ptr sta (ZPPtr3),y - + K.SScanF.Fwd tya Y=char count parsed clc adc ZPPtr2 @@ -1185,7 +1220,7 @@ K.FOpen jsr PFT.CheckPathYA jsr STDIO.NewHFile bcc K.FClose.RTS - + jmp IO.Open.ERR K.FOpen.RET4 >RET 4 @@ -1202,18 +1237,18 @@ K.FOpen.RET4 >RET 4 *\-------------------------------------- K.FClose jsr PFT.CheckNodeA bcs K.FClose.RTS - + sta .1+1 store hFile - + jsr IO.Close.I bcs K.FClose.RTS - + .1 ldx #$ff SELF MODIFIED stz OF.Table.hFD-1,x lda OF.Table.hPath-1,x beq K.FClose.RTS special files have no path - + stz OF.Table.hPath-1,x jmp K.FreeMem discard filename @@ -1234,8 +1269,16 @@ K.FClose.RTS rts *\-------------------------------------- K.FRead jsr PFT.CheckNodeA bcs K.FOpen.RET4 - - jmp IO.Read.I + + jsr IO.Read.I + bcc .9 + + tay + bpl .9 + + inc 0 = BLOCKING + +.9 rts */-------------------------------------- * # FWrite (BLOCKING) * Write bytes to file @@ -1252,8 +1295,16 @@ K.FRead jsr PFT.CheckNodeA *\-------------------------------------- K.FWrite jsr PFT.CheckNodeA bcs K.FOpen.RET4 - - jmp IO.Write.I + + jsr IO.Write.I + bcc .9 + + tay + bpl .9 + + inc 0 = BLOCKING + +.9 rts */-------------------------------------- * # FFlush * ## C @@ -1265,8 +1316,15 @@ K.FWrite jsr PFT.CheckNodeA *\-------------------------------------- K.FFlush jsr PFT.CheckNodeA bcs .9 + + lda (pFD) + bne STDIO.IOERR >MLICALL MLIFLUSH .9 rts +*-------------------------------------- +STDIO.IOERR lda #MLI.E.IO + sec + rts */------------------------------------- * # FSeek * Set the file-position indicator for hFILE @@ -1281,18 +1339,18 @@ K.FFlush jsr PFT.CheckNodeA *\------------------------------------- K.FSeek jsr PFT.CheckNodeA bcc .11 - - >RET 6 - + + >RET 5 + .11 >PULLA whence tax >PULLW ZPPtr1 offset LW >PULLW ZPPtr2 offset HW cpx #SEEK.END+1 bcs .98 - + jmp (.1,x) - + .1 .DA .10 .DA .20 .DA .30 @@ -1313,9 +1371,9 @@ K.FSeek jsr PFT.CheckNodeA .8 ldy #0 ldx #3 3 bytes, 24 bits!!! - + clc - + .81 lda K.MLI.PARAMS+2,y adc ZPPtr1,y sta K.MLI.PARAMS+2,y @@ -1323,7 +1381,7 @@ K.FSeek jsr PFT.CheckNodeA iny dex bne .81 - + bcs .99 Offset out of range! .82 >MLICALL MLISETMARK @@ -1357,9 +1415,9 @@ K.FSeek jsr PFT.CheckNodeA *\-------------------------------------- K.FEOF jsr PFT.CheckNodeA bcs .9 - + jmp IO.EOF - + .9 rts */-------------------------------------- * # FTell @@ -1377,17 +1435,17 @@ K.FTell jsr PFT.CheckNodeA bcs .9 >MLICALL MLIGETMARK bcs .9 - + lda #0 >PUSHA - + ldy #2 - + .1 lda K.MLI.PARAMS+2,y >PUSHA dey bpl .1 - + .9 rts */-------------------------------------- * # Remove @@ -1402,7 +1460,7 @@ K.FTell jsr PFT.CheckNodeA *\-------------------------------------- K.Remove jsr PFT.CheckPathYA bcs .9 - + >MLICALL MLIDESTROY .9 rts */-------------------------------------- @@ -1421,16 +1479,16 @@ K.Rename jsr PFT.CheckPathYA bcs .9 >PULLW .1+1 - + ldy #0 - + .1 lda $ffff,y Self Modified beq .8 iny sta K.Buf256,y cpy #MLI.MAXPATH bne .1 - + .8 sty K.Buf256 >LDYAI K.Buf256 >STYA K.MLI.PARAMS+3 @@ -1449,30 +1507,30 @@ STDIO.NewHFile sta .4+1 Store hFD .1 lda OF.Table.hFD-1,x beq .2 - + inx cpx #K.OF.MAX+1 bne .1 - + lda #E.OOH * sec rts - + .2 stx .3+1 Store hFILE - + lda (pFD) cmp #S.FD.T.CDEV beq .20 - + cmp #S.FD.T.BDEV bne .21 - + .20 lda #0 No hPath for DEV bra .3 - + .21 >LDYAI K.buf256 ldx #SYS.strdup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 txa @@ -1483,14 +1541,10 @@ STDIO.NewHFile sta .4+1 Store hFD sta OF.Table.hFD-1,x txa hFILE - + clc .9 rts *-------------------------------------- -STDIO.IOERR lda #MLI.E.IO - sec - rts -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.STDIO LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 47a603f3..c5400a5b 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -315,7 +315,7 @@ STDLIB.realpath.I ror .82+1 ldx #SYS.ExpandStr - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs STDLIB.32.RTS >STYA ZPPtr1 @@ -426,8 +426,7 @@ STDLIB.realpath.I bpl .88 >LDYAI K.Buf256 ldx #SYS.StrDup BANK 2 - jsr K.SYSCALL.GoB - rts + jmp K.SYSCALL2.BANK .88 clc rts diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index 9800e75b..91b0ef39 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -266,8 +266,8 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB clc rts -.9 lda #0 Error = char - sec +.9 lda #E.NODATA +* sec rts *-------------------------------------- DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB @@ -296,6 +296,8 @@ DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB .DA DRV.TERM.ESC .DA DRV.TERM.CSI .DA DRV.TERM.IAC + .DA DRV.TERM.G0 + .DA DRV.TERM.G1 *-------------------------------------- DRV.TERM.COUT lda (ZPBufPtr) @@ -332,9 +334,7 @@ DRV.TERM.COUT lda (ZPBufPtr) .DA DRV.TERM.COUT.FS .DA DRV.TERM.COUT.ESC -.8 ldy #S.DCB.TTY.bINVERSE - ora (ZPDCBPtr),y - jsr SetCharAtCurPos +.8 jsr SetCharAtCurPos *-------------------------------------- DRV.TERM.COUT.FS ldy #S.DCB.TTY.CH @@ -378,8 +378,6 @@ DRV.TERM.COUT.DEL sta (ZPDCBPtr),y S.DCB.TTY.CH .3 lda #$20 - ldy #S.DCB.TTY.bINVERSE - ora (ZPDCBPtr),y jmp SetCharAtCurPos *-------------------------------------- DRV.TERM.COUT.FF @@ -438,6 +436,8 @@ DRV.TERM.ESC1 lda #0 y = #S.DCB.TTY.MODE .4 .DA Scroll.Dn M .DA Scroll.Up D .DA RESET c + .DA G0 ( + .DA G1 ) *-------------------------------------- DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y @@ -453,9 +453,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full? bne .8 - lda #0 - ldy #S.DCB.TTY.MODE - sta (ZPDCBPtr),y + jmp RESET.MODE .8 clc rts @@ -526,9 +524,7 @@ DRV.TERM.CSI.Exec pha - lda #0 - ldy #S.DCB.TTY.MODE - sta (ZPDCBPtr),y + jsr RESET.MODE pla @@ -576,7 +572,9 @@ Csi.LWDisable clc rts *-------------------------------------- Csi.DispAttr ldx CsiParamCnt - beq .8 + bne .1 + + jmp RESETATTR .1 lda CsiParams-1,x bne .2 @@ -585,9 +583,9 @@ Csi.DispAttr ldx CsiParamCnt bra .7 .2 eor #7 - bne .8 + bne .7 - ldy #S.DCB.TTY.bINVERSE +.3 ldy #S.DCB.TTY.bINVERSE sta (ZPDCBPtr),y .7 dex @@ -676,7 +674,7 @@ Csi.Home lda CsiParamCnt ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y - iny + iny S.DCB.TTY.CV sta (ZPDCBPtr),y clc rts @@ -718,6 +716,11 @@ Csi.Home lda CsiParamCnt Csi.Home.8 clc rts *-------------------------------------- +DRV.TERM.G0 +DRV.TERM.G1 + + jmp RESET.MODE +*-------------------------------------- DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y inc @@ -843,8 +846,7 @@ COUT.IAC.DONT COUT.IAC.EXIT *-------------------------------------- RESET.MODE lda #0 - - ldy #S.DCB.TTY.MODE +SET.MODE ldy #S.DCB.TTY.MODE sta (ZPDCBPtr),y clc rts @@ -865,6 +867,12 @@ RESETATTR lda #$80 clc rts *-------------------------------------- +G0 lda #S.DCB.TTY.MODE.G0 + .HS 2C BIT ABS +*-------------------------------------- +G1 lda #S.DCB.TTY.MODE.G1 + bra SET.MODE +*-------------------------------------- ENQ ldx #0 .1 lda ENQ.String,x @@ -1263,7 +1271,7 @@ RESET.VALUES .DA #0 S.DCB.TTY.MODE CtrlChars .HS 05080A0C0D151B CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- -EscCodes .AZ "MDc" +EscCodes .AZ "MDc()" EscCodes.Cnt .EQ *-EscCodes CsiCodes .AS "hlmnrKH" CsiCodes.Cnt .EQ *-CsiCodes diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index 7d7c2b0b..875c8d5d 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -167,7 +167,9 @@ SetCharAtCurPos.SCR pla bra SetCharAtY.SCR -SetCharAtCurPos pha +SetCharAtCurPos ldy #S.DCB.TTY.bINVERSE + ora (ZPDCBPtr),y + pha ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y tax @@ -226,6 +228,9 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV rts *-------------------------------------- +REMAP.95.126 .HS 404142434445464748494a4b4c4d4e4f + .HS 505152535455565758595a5b5c5d5e5f +*-------------------------------------- BUF.BASEL .DA #0 .DA #80 .DA #160