From d74c8452f1a9163239e933d9686050f19af6c0d5 Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Sun, 28 Mar 2021 13:48:45 -0400 Subject: [PATCH] Enable 80 columns for command line --- Apple2/CommandFirmware.asm | 11 +- Apple2/CommandFirmware.lst | 167 ++++++++++++++-------------- Apple2/Firmware_27256_EPROM.bin | Bin 32768 -> 32768 bytes Apple2/Firmware_AT28C64B_EEPROM.bin | Bin 8192 -> 8192 bytes 4 files changed, 84 insertions(+), 94 deletions(-) diff --git a/Apple2/CommandFirmware.asm b/Apple2/CommandFirmware.asm index 17da20d..64c6bbe 100644 --- a/Apple2/CommandFirmware.asm +++ b/Apple2/CommandFirmware.asm @@ -46,6 +46,7 @@ DriverEntry: sta OutputFlags Start: + jsr $c300 ;enable 80 columns lda $33 pha lda #$a4 @@ -53,17 +54,11 @@ Start: GetCommand: jsr $fd67 lda $0200 - cmp #$8d ;stop when return found - beq ExitApp + cmp #$8d ;skip when return found + beq GetCommand jsr DumpOutput clc bcc GetCommand -ExitApp: - pla - sta $33 - lda #$00 - sty $34 - rts DumpOutput: lda #$05 ;send command 5 = exec diff --git a/Apple2/CommandFirmware.lst b/Apple2/CommandFirmware.lst index d3fa069..a3e557a 100644 --- a/Apple2/CommandFirmware.lst +++ b/Apple2/CommandFirmware.lst @@ -50,92 +50,87 @@ Current file: CommandFirmware.asm 00C516 1 8D D7 C0 sta OutputFlags 00C519 1 00C519 1 Start: -00C519 1 A5 33 lda $33 -00C51B 1 48 pha -00C51C 1 A9 A4 lda #$a4 -00C51E 1 85 33 sta $33 -00C520 1 GetCommand: -00C520 1 20 67 FD jsr $fd67 -00C523 1 AD 00 02 lda $0200 -00C526 1 C9 8D cmp #$8d ;stop when return found -00C528 1 F0 06 beq ExitApp -00C52A 1 20 38 C5 jsr DumpOutput -00C52D 1 18 clc -00C52E 1 90 F0 bcc GetCommand -00C530 1 ExitApp: -00C530 1 68 pla -00C531 1 85 33 sta $33 -00C533 1 A9 00 lda #$00 -00C535 1 84 34 sty $34 -00C537 1 60 rts -00C538 1 -00C538 1 DumpOutput: -00C538 1 A9 05 lda #$05 ;send command 5 = exec -00C53A 1 20 61 C5 jsr SendByte -00C53D 1 A0 00 ldy #$00 -00C53F 1 getInput: -00C53F 1 B9 00 02 lda $0200,y -00C542 1 C9 8D cmp #$8d -00C544 1 F0 08 beq sendNullTerminator -00C546 1 29 7F and #$7f -00C548 1 20 61 C5 jsr SendByte -00C54B 1 C8 iny -00C54C 1 D0 F1 bne getInput -00C54E 1 sendNullTerminator: -00C54E 1 A9 00 lda #$00 -00C550 1 20 61 C5 jsr SendByte -00C553 1 getOutput: -00C553 1 20 7F C5 jsr GetByte -00C556 1 C9 00 cmp #$00 -00C558 1 F0 06 beq endOutput -00C55A 1 20 ED FD jsr $fded -00C55D 1 18 clc -00C55E 1 90 F3 bcc getOutput -00C560 1 endOutput: -00C560 1 60 rts -00C561 1 -00C561 1 SendByte: -00C561 1 48 pha -00C562 1 waitWrite: -00C562 1 AD DB C0 lda InputFlags -00C565 1 2A rol -00C566 1 2A rol -00C567 1 B0 F9 bcs waitWrite -00C569 1 68 pla -00C56A 1 8D DD C0 sta OutputByte -00C56D 1 A9 1E lda #$1e ; set bit 0 low to indicate write started -00C56F 1 8D D7 C0 sta OutputFlags -00C572 1 finishWrite: -00C572 1 AD DB C0 lda InputFlags -00C575 1 2A rol -00C576 1 2A rol -00C577 1 90 F9 bcc finishWrite -00C579 1 A9 1F lda #$1f -00C57B 1 8D D7 C0 sta OutputFlags -00C57E 1 60 rts -00C57F 1 -00C57F 1 GetByte: -00C57F 1 A9 1D lda #$1d ;set read flag low -00C581 1 8D D7 C0 sta OutputFlags -00C584 1 waitRead: -00C584 1 AD DB C0 lda InputFlags -00C587 1 2A rol -00C588 1 B0 FA bcs waitRead -00C58A 1 AD DE C0 lda InputByte -00C58D 1 48 pha -00C58E 1 A9 1F lda #$1f ;set all flags high -00C590 1 8D D7 C0 sta OutputFlags -00C593 1 finishRead: -00C593 1 AD DB C0 lda InputFlags -00C596 1 2A rol -00C597 1 90 FA bcc finishRead -00C599 1 68 pla -00C59A 1 end: -00C59A 1 60 rts -00C59B 1 -00C59B 1 00 00 00 00 .repeat 251-I=%O!*V#V4^15ltmg#+q6xLn;5+m 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 diff --git a/Apple2/Firmware_AT28C64B_EEPROM.bin b/Apple2/Firmware_AT28C64B_EEPROM.bin index 034289fa75ded8ba8de98c608d6ffb2ffd40b609..c25fb246a6c4a5980c3fc9d8ac76100dd715d523 100644 GIT binary patch delta 552 zcmZ|HEe^sk0LAfT$&&6H3BlB&C$N)T0Eg!e7-o zJX2Bi@_*u&rCD0c$dX$8nylF6kkIY#X4$V}_oYcWJ$1~XoAPWu#*ZxaLp|RgW(`Ys z`I@l2AWq(sxxuJlRGLx2sFdNta7{)Hqt=WXMy(7FhG#N346Yd*23Lj;!#5cXj7BpW y7>zOl7=g(UFob3Z7(y8#jL>9A7*aDN45^F=Mr1Nt7_DZsFj{5AqjB$Jd-4ZtQ0}<^ delta 560 zcmZw9FAl;m9ERa#38Z8HkPyr)dI$t!63G!j!7VnyBninbfB;cJLW07r>$-yDDB}Pu z{7P!tRDF5#B~O-Q$!&}lmw1WKc^qxOSId4K+I}=IN5^)T$JpA>*0>jK%9Hi@e`uOQ zJ>MT}!A5DZLb&MA#DowHAqqkyLImOf;uw)iLn;NSBvJ`v0LZ|IPz|99LM1{4;sW9t zky=A)1*s)c3&aD&Ga^hwn1V2gFoF1h_(r7BkVZioi8KNU011o;*AT8CTq0Z`A-;E^ GJ^TS=9_?`e