From 83fb789c1f554647854936e0f22df7f07c820b51 Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Tue, 11 May 2021 04:23:30 +0000 Subject: [PATCH] Add help to command execution --- Apple2/27256.bin | Bin 32768 -> 32768 bytes Apple2/AT28C64B.bin | Bin 8192 -> 8192 bytes Apple2/CommandFirmware.asm | 25 +++- Apple2/CommandFirmware.lst | 208 ++++++++++++++++++---------------- RaspberryPi/Apple2-IO-RPi.hdv | Bin 33553920 -> 33553920 bytes RaspberryPi/Driver.go | 10 +- 6 files changed, 136 insertions(+), 107 deletions(-) diff --git a/Apple2/27256.bin b/Apple2/27256.bin index 12774dc48cc65949013b0ba02db564588874ddf5..b0094fb235ce758e1454727f60cdbdfd5e9f69fb 100644 GIT binary patch literal 32768 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 A6951J diff --git a/Apple2/AT28C64B.bin b/Apple2/AT28C64B.bin index a830d0275c31d36e11fa775f1aa423e864770a3a..82e4577861834032e3bf97f5faf6ed09bae6b9ad 100644 GIT binary patch delta 856 zcmZwAy-EW?5Ww*xpj^H!Q;1A!YhECwjc;IK3ULbyD?2eMEQLVIZ7j4%AqZA>x8J7o zMT8U4F2R|-m2IY)Vc!l1h>S zp%_UeiGnO)6eR^xaZ($lb|Yz$G)X#18iZyfog@mfgi(|8TJV?(;1C$1h6i5mrg(L+KfssOz UD9927+D97)P8Kk_9&bfh%y@(FodJhMRIyeeKZlFUuWDp9Sy5)Q~TW+L~ zBDfh8d6pN>^zeU%-zMMWUkj0cW>4kEE~D4WG3nL&_Doro9@?@`&((YKbN|F@eXHN* zzf5jRvZ|AIK!2C?aC#};#I|U}vgpKP3{$`q!xS(@QZZ}@Y#7BfFwHOxOq0|M8vz?d zF$2sn%m6ba4a3I3#!<`yvkbGqEJ@3-39v~NbHE(K956@HF>DHK8pS*?&oB?nlk^Om Y0h>j!04y*p01G4o!{&GFyPNkOu0_-yEC2ui diff --git a/Apple2/CommandFirmware.asm b/Apple2/CommandFirmware.asm index b45acb4..543ae43 100644 --- a/Apple2/CommandFirmware.asm +++ b/Apple2/CommandFirmware.asm @@ -47,6 +47,20 @@ DriverEntry: Start: jsr $c300 ;enable 80 columns + lda #$05 ;execute command + jsr SendByte + ldy #$00 +sendHelp: + lda HelpCommand,y + beq endSendHelp + jsr SendByte + iny + bne sendHelp +endSendHelp: + lda #$00 + jsr SendByte + jsr DumpOutput + lda $33 pha lda #$a4 @@ -56,11 +70,11 @@ GetCommand: lda $0200 cmp #$8d ;skip when return found beq GetCommand - jsr DumpOutput + jsr SendCommand clc bcc GetCommand -DumpOutput: +SendCommand: lda #$05 ;send command 5 = exec jsr SendByte ldy #$00 @@ -75,16 +89,19 @@ getInput: sendNullTerminator: lda #$00 jsr SendByte -getOutput: +DumpOutput: jsr GetByte cmp #$00 beq endOutput jsr $fded clc - bcc getOutput + bcc DumpOutput endOutput: rts +HelpCommand: + .byte "a2help",$00 + SendByte: pha waitWrite: diff --git a/Apple2/CommandFirmware.lst b/Apple2/CommandFirmware.lst index 9c2ba12..0932251 100644 --- a/Apple2/CommandFirmware.lst +++ b/Apple2/CommandFirmware.lst @@ -51,109 +51,119 @@ Current file: CommandFirmware.asm 00C719 1 00C719 1 Start: 00C719 1 20 00 C3 jsr $c300 ;enable 80 columns -00C71C 1 A5 33 lda $33 -00C71E 1 48 pha -00C71F 1 A9 A4 lda #$a4 -00C721 1 85 33 sta $33 -00C723 1 GetCommand: -00C723 1 20 67 FD jsr $fd67 -00C726 1 AD 00 02 lda $0200 -00C729 1 C9 8D cmp #$8d ;skip when return found -00C72B 1 F0 F6 beq GetCommand -00C72D 1 20 33 C7 jsr DumpOutput -00C730 1 18 clc -00C731 1 90 F0 bcc GetCommand -00C733 1 -00C733 1 DumpOutput: -00C733 1 A9 05 lda #$05 ;send command 5 = exec -00C735 1 20 5C C7 jsr SendByte -00C738 1 A0 00 ldy #$00 -00C73A 1 getInput: -00C73A 1 B9 00 02 lda $0200,y -00C73D 1 C9 8D cmp #$8d -00C73F 1 F0 08 beq sendNullTerminator -00C741 1 29 7F and #$7f -00C743 1 20 5C C7 jsr SendByte -00C746 1 C8 iny -00C747 1 D0 F1 bne getInput -00C749 1 sendNullTerminator: -00C749 1 A9 00 lda #$00 -00C74B 1 20 5C C7 jsr SendByte -00C74E 1 getOutput: -00C74E 1 20 7A C7 jsr GetByte -00C751 1 C9 00 cmp #$00 -00C753 1 F0 06 beq endOutput -00C755 1 20 ED FD jsr $fded -00C758 1 18 clc -00C759 1 90 F3 bcc getOutput -00C75B 1 endOutput: -00C75B 1 60 rts -00C75C 1 -00C75C 1 SendByte: -00C75C 1 48 pha -00C75D 1 waitWrite: -00C75D 1 AD FB C0 lda InputFlags -00C760 1 2A rol -00C761 1 2A rol -00C762 1 B0 F9 bcs waitWrite -00C764 1 68 pla -00C765 1 8D FD C0 sta OutputByte -00C768 1 A9 1E lda #$1e ; set bit 0 low to indicate write started -00C76A 1 8D F7 C0 sta OutputFlags -00C76D 1 finishWrite: -00C76D 1 AD FB C0 lda InputFlags -00C770 1 2A rol -00C771 1 2A rol -00C772 1 90 F9 bcc finishWrite -00C774 1 A9 1F lda #$1f -00C776 1 8D F7 C0 sta OutputFlags -00C779 1 60 rts -00C77A 1 -00C77A 1 GetByte: -00C77A 1 A9 1D lda #$1d ;set read flag low -00C77C 1 8D F7 C0 sta OutputFlags -00C77F 1 waitRead: -00C77F 1 AD FB C0 lda InputFlags +00C71C 1 A9 05 lda #$05 ;execute command +00C71E 1 20 7D C7 jsr SendByte +00C721 1 A0 00 ldy #$00 +00C723 1 sendHelp: +00C723 1 B9 76 C7 lda HelpCommand,y +00C726 1 F0 06 beq endSendHelp +00C728 1 20 7D C7 jsr SendByte +00C72B 1 C8 iny +00C72C 1 D0 F5 bne sendHelp +00C72E 1 endSendHelp: +00C72E 1 A9 00 lda #$00 +00C730 1 20 7D C7 jsr SendByte +00C733 1 20 68 C7 jsr DumpOutput +00C736 1 +00C736 1 A5 33 lda $33 +00C738 1 48 pha +00C739 1 A9 A4 lda #$a4 +00C73B 1 85 33 sta $33 +00C73D 1 GetCommand: +00C73D 1 20 67 FD jsr $fd67 +00C740 1 AD 00 02 lda $0200 +00C743 1 C9 8D cmp #$8d ;skip when return found +00C745 1 F0 F6 beq GetCommand +00C747 1 20 4D C7 jsr SendCommand +00C74A 1 18 clc +00C74B 1 90 F0 bcc GetCommand +00C74D 1 +00C74D 1 SendCommand: +00C74D 1 A9 05 lda #$05 ;send command 5 = exec +00C74F 1 20 7D C7 jsr SendByte +00C752 1 A0 00 ldy #$00 +00C754 1 getInput: +00C754 1 B9 00 02 lda $0200,y +00C757 1 C9 8D cmp #$8d +00C759 1 F0 08 beq sendNullTerminator +00C75B 1 29 7F and #$7f +00C75D 1 20 7D C7 jsr SendByte +00C760 1 C8 iny +00C761 1 D0 F1 bne getInput +00C763 1 sendNullTerminator: +00C763 1 A9 00 lda #$00 +00C765 1 20 7D C7 jsr SendByte +00C768 1 DumpOutput: +00C768 1 20 9B C7 jsr GetByte +00C76B 1 C9 00 cmp #$00 +00C76D 1 F0 06 beq endOutput +00C76F 1 20 ED FD jsr $fded +00C772 1 18 clc +00C773 1 90 F3 bcc DumpOutput +00C775 1 endOutput: +00C775 1 60 rts +00C776 1 +00C776 1 HelpCommand: +00C776 1 61 32 68 65 .byte "a2help",$00 +00C77A 1 6C 70 00 +00C77D 1 +00C77D 1 SendByte: +00C77D 1 48 pha +00C77E 1 waitWrite: +00C77E 1 AD FB C0 lda InputFlags +00C781 1 2A rol 00C782 1 2A rol -00C783 1 B0 FA bcs waitRead -00C785 1 AD FE C0 lda InputByte -00C788 1 48 pha -00C789 1 A9 1F lda #$1f ;set all flags high +00C783 1 B0 F9 bcs waitWrite +00C785 1 68 pla +00C786 1 8D FD C0 sta OutputByte +00C789 1 A9 1E lda #$1e ; set bit 0 low to indicate write started 00C78B 1 8D F7 C0 sta OutputFlags -00C78E 1 finishRead: +00C78E 1 finishWrite: 00C78E 1 AD FB C0 lda InputFlags 00C791 1 2A rol -00C792 1 90 FA bcc finishRead -00C794 1 68 pla -00C795 1 end: -00C795 1 60 rts -00C796 1 -00C796 1 00 00 00 00 .repeat 251-xcO4N-)OL{brnDAFp8B-v6al}bn}6~>ZOTon~bO5NEj zTS#RKS=+d2L0Wvj<8khrdGYzqbLO1?{LZ|X8L|IRg%McLxS;ghdSyzFYErPINkRVR zN<9h-f?-87@|F%PDlWs*s^M+y(ys138b*5e8<01>OSSxw(+^h5uae!0xfOFO7H-9Y zNG!)zEZp*-WQ(KhRxF6da&1+2t9rNlx%U7-AV`1bgr#BZq*65GHzwu%7j~)Ad<<8VAqz==2sC!-=x!KpY6 zl~5T~a5@51MKx4M4b(&})J7fDMLpEV88{PXp#jduIcSJRI2Y%kG0w*YxDZXy6wPoE zE=F@)f)=P9j?YTXpd{r0oUPrbi@s~5uMN(H{oVD zZs?94=!ssq6}@pA`XGYa(HD21AMQkd+=T(S8~5N|+=u%y5D#Dw24e^w#83>wLl}+` z7>S253ZpRwk6%+9*Dx3JFdwhu4J^PyEW(?33ybkKmf#&M#k*LB<#-P(uo6XxA&vx+ zNFj|3R$(>P;C+065AhK`##(%WPw^Sn;d89V25iI^_!3{?YkY%E_!i&cdu+xJ_z^$h zXZ(U+u?1VP4coB;zu|WjV<-N=F6_o0?8Tq>3x8uD{=t46z(E`u$8UckOeu4iDQyZ& z8B^AjGl!e<<_L47Im#SuDwt!;vF12)yg9*~XihRGn~LTXbE-MbR5F!K6?3`?OjT3O zR5vwDO;gL%Hg!z)%hdC!zB$93Y0feY%-QA~)6g_B=bH0OV{^W_z+7mWn5L$gxyW2> znwv{Z3v;Qt%(OI@n^xuu)7rE#ZOxVDD$~wfZLTrx&9$b3xz1c~I+`2Iji!_7Y;H0) zn=a-S)75k{-AxbE)ATa8n%?F%)5k>2?WV7}!}K$En*Qc4Gr-(!?lJe8`^^1jpn1Ry zGK0+!^Pm}OhM9-Va5KV;G!L6mX0#b&9x-FhqvkR5xEW`jFyqYxGto>klg$+Kq);1!kdH zWZpDynZ@R9v&6h(mYR3XGPB&gXI7Y%rpUxh+$2oWq)ggm%qp|mtTFGK56p+=BlEFY zYd$fbn$OHS^SN1XHkgg(3-hJ<%6x6UF`LY{<~#Gf*=&9=KboJ+&*m5NtJz|JOBUy delta 2332 zcmW;MQ;-;D6hPtGBpchdZER!Pwrw?RHn!W?wr$(C%{FG!bNcX|`DgCaeYk({k6%%O zu`YLDs1@l`g%}(ZxHTv+;6cKz2}=h23^P1l`T&GLNQ6QlLc>{DghO~lKtx1BWJEz! zL_>7MKup9!Y{Wra#6x@}Ktd!!VkALQBtvqfKuV-SYNSD0q(gdSKt^OjW@JHDWJ7l3 zKu+XBZsb8;t^6hToGLvfTqNt8lqltEdPLwQs{MN~p%R6$i#Lv_?Z zP1Hhd)InX;Lwz(rLo`BTG(l4|Lvyr1OSD33v_V_6Lwj^UM|47GbU{~iLwEE*PyCKv z=#4(;i+<>jKQI8n7>Gd_j3F3`VHl1P7>Q9BjWHODaTt#Yn21T3j6d-greG?jVLE1D zCT3wa=3p-7VLldMAr@gVmS8ECVL4V{C01cI)?h8xVLdirBQ{|(wqPr^VLNtUCw5^s z_FymeVLuMwAP(U$j^HSc;W$pMCT`(2?%*!& z;XWSVAs*o|p5Q5-;W=L5C0^k*-rz0%#y@z6_xOO1_=L~+g0J|7@A!eA_!qxMbNl0A zLYR;ylnFGUO&Al_gfrny1QXFjGLcOb6V*gB(M=2!)5J2dO&k-~#53_t0+Y}rGKozR zlhh=!#+wOdqM2kSn?KE8 zW{R0=rkUwxhM8$*nb~HJnQP{m`DTGxXcn2pW{Fv9mYL;dg;{Apr^=53Jj+x`;ggI$WnbYQsIcv_D z^X7uNXfBz{=8Cy$u9@rRhPi2OncL=$xohs3`{sdpXdaoz=81V~o|)(7g?VXSnb+ox od29YQ|Co2?z4>51nos7l`C`7BZ|1xCVSbu_1NQR!1w6g@A88G#4gdfE diff --git a/RaspberryPi/Driver.go b/RaspberryPi/Driver.go index 0b5ba98..48fdf2b 100644 --- a/RaspberryPi/Driver.go +++ b/RaspberryPi/Driver.go @@ -147,10 +147,12 @@ func handleExecCommand() { return } if linuxCommand == "a2help" { - writeString("This is a pseudo shell. Each command is executed as a process. The cd command is\n" + - "intercepted and sets the working directory for the next command. Running\n" + - "commands that do not exit will hang. For example, do not use ping without a -c 1\n" + - "or something else to limit its output.\n") + writeString("\r" + + "This is a pseudo shell. Each command is executed as a process. The cd command\r" + + "is intercepted and sets the working directory for the next command. Running\r" + + "commands that do not exit will hang. For example, do not use ping without a\r" + + "way to limit output like -c 1.\r\r") + return } cmd := exec.Command("bash", "-c", linuxCommand) cmd.Dir = workingDirectory