* * GraForth - Editor * * (c) 1981, Paul Lutus * (s) 2020, LoGo * xc xc mx %11 typ bin org $9000 lst off *---------------------------- VTAB EQU $FC22 RDCHAR EQU $FD35 COUT EQU $FDED L6000 = $6000 ; return to Forth L6006 = L6000+6 ; read line of chars L8600 = $8600 ; buffer L8800 = $8800 ; buffer *---------------------------- L9000 LDA #$4C LDA $03D2 CLC ADC #$09 STA L9018+2 STA L901D+2 STA L9022+2 ADC #$03 STA L9052+2 LDA #$4C L9018 STA $A6E1 LDA #L9056 L9022 STA $A6E3 LDA L909D STA $80 LDA L909D+1 STA $81 BIT L990C BMI L909F LDA #L8800 STA L909D+1 STA $81 JSR L92A0 LDA #$FF STA L990C LDA #$23 JSR L9052 JMP L909F L9052 STA $A923 RTS L9056 JSR $03EA LDA #$23 JSR L9052 LDY #$00 BIT L943E BPL L906E STY L943E JSR L9257 JMP L90E1 L906E LDA L907F,Y BEQ L9079 JSR COUT INY BNE L906E L9079 JSR L6006 JMP L909F L907F ASC 878D8D ASC "Disk Error (Press Return) "00 L909D DA L8600 ; buffer L909F JSR L98C3 JSR L97FA JSR $03EA JSR L97AD JSR L97D7 LDY #$00 L90B0 LDA L90BB,Y BEQ L90E1 JSR COUT INY BNE L90B0 L90BB ASC "GraFORTH ][ Editor (C) P. Lutus 1981"8D00 L90E1 LDA #$FF STA $33 LDA #$80 STA $D9 STA $76 JSR L9656 LDA #$00 STA $10 LDA #$8D JSR COUT BIT L943E BPL L9105 L90FC JSR L6006 JSR L9832 JMP L90FC L9105 BIT $10 BPL L9111 JSR L96E6 LDA #$A0 JSR COUT L9111 JSR L6006 LDA $0200 CMP #$8C BEQ L9105 BIT $10 BMI L912A CMP #$C1 BNE L912A LDA #$FF STA $10 JMP L9105 L912A CMP #$8D BNE L9134 LDY #$00 STY $10 BEQ L9105 L9134 BIT $10 BMI L9140 CMP #$B0 BCC L9177 CMP #$BA BCS L9177 L9140 BIT $10 BMI L9171 LDY #$00 JSR L9759 BIT $8F BPL L9177 LDA $8A STA $86 LDA $8B STA $87 TYA PHA JSR L96A3 LDA $84 CMP $86 BNE L9169 LDA $85 CMP $87 BNE L9169 JSR L9688 L9169 PLA TAX JSR L9834 JMP L9105 L9171 JSR L9832 JMP L9105 L9177 CMP #$E0 BCC L917D SBC #$20 L917D STA $8E JSR L91A9 JMP L90E1 L9185 LDY #$00 L9187 LDA #$8D JSR COUT L918C LDA L91EB,Y CMP #$84 BEQ L91A0 CMP #$00 BMI L919D CMP #$01 BEQ L91A7 BNE L91A0 L919D JSR COUT L91A0 INY CMP #$A0 BEQ L9187 BNE L918C L91A7 RTS DB $00 L91A9 CMP #$BF BNE L91B0 JMP L9185 L91B0 JSR L98C3 JSR L97FA LDA $8E LDX #$00 LDY #$00 L91BC LDA L91EB,Y BEQ L91D0 CMP $8E BEQ L91D5 INX L91C6 LDA L91EB,Y INY CMP #$A0 BNE L91C6 BEQ L91BC L91D0 LDA #$BF JMP COUT L91D5 TXA ASL TAX LDA L923F,X STA $8A LDA L923F+1,X STA $8B JSR L91E8 JMP L9257 L91E8 JMP ($008A) L91EB ASC "Save " ASC "Get " ASC "Insert " ASC "Delete " ASC "Program " ASC "Memory " ASC "List " ASC "Write " ASC "Erase " ASC "Autonum " ASC "Bye " ASC 8400 ASC "ConTRoL-D=DOS " HEX 01 L923F DA L9372 DA L93B1 DA L961A DA L944F DA L94CF DA L9598 DA L95C9 DA L95C6 DA L9271 DA L9401 DA L94CC DA L92BE L9257 BIT L943E BMI L9269 LDY #$00 L925E LDA L926A,Y BEQ L9269 JSR COUT INY BNE L925E L9269 RTS L926A ASC 8D ASC "Done"8D00 L9271 LDY #$00 L9273 LDA L928B,Y BEQ L927E JSR COUT INY BNE L9273 L927E JSR L6006 LDA $0200 CMP #$D9 BEQ L92A0 PLA PLA RTS L928B ASC 8D ASC "Erase File (Y/N) : "00 L92A0 LDA L909D STA $80 LDA L909D+1 STA $81 LDA #$FF STA $82 LDA #$8F STA $83 LDA #$00 LDY #$01 STA ($80),Y STA $8FFE JMP L98C3 L92BE LDA #$02 STA $8E L92C2 LDY #$00 L92C4 LDA L9303,Y BEQ L92CF JSR COUT INY BNE L92C4 L92CF JSR L6006 LDA $0200 CMP #$8D BNE L92DE DEC $8E BNE L92C2 RTS L92DE LDY #$00 L92E0 LDA $0200,Y STA $0300,Y INY CMP #$8D BNE L92E0 JSR COUT LDA #$84 JSR COUT LDY #$00 L92F5 LDA $0300,Y JSR COUT INY CMP #$8D BNE L92F5 JMP L92BE L9303 ASC 8D ASC "Enter DOS Command : "00 L9319 LDY #$00 L931B LDA L9364,Y BEQ L9326 JSR COUT INY BNE L931B L9326 LDA $24 PHA LDY #$00 L932B LDA L990D,Y CMP #$8D BEQ L9338 JSR COUT INY BNE L932B L9338 PLA STA $24 JSR L6006 LDY #$00 LDA $0200 CMP #$8D BNE L934A PLA PLA RTS L934A LDY #$FF L934C INY LDA $0200,Y STA L990D,Y CMP #$AF BEQ L935C CMP #$8D BNE L934C RTS L935C PHA LDA #$8D STA L990D,Y PLA RTS L9364 ASC "(Filename) : "00 L9372 LDY #$FF STY $88 STY $89 INY STY $86 STY $87 JSR L9319 CMP #$AF ; / BNE L9388 INY JSR L948F L9388 JSR L93C8 JSR L965C L938E JSR L9645 CMP #$00 BEQ L93A9 JSR L987B LDA $84 SEC SBC $88 STA $8E LDA $85 SBC $89 ORA $8E BEQ L938E BCC L938E L93A9 LDA #$00 JSR COUT JMP L97AD L93B1 LDA #$00 STA $86 STA $87 JSR L9319 CMP #$AF ; / BNE L93C5 INY JSR L948F JSR L96A3 L93C5 JMP L9413 L93C8 LDA #$8D STA $8E LDY #$FF L93CE INY LDA L9402,Y BEQ L93E7 CMP #$A0 BNE L93E1 JSR L93E8 LDA #$AC STA $8E BNE L93CE L93E1 JSR COUT JMP L93CE L93E7 RTS L93E8 TYA PHA LDY #$00 L93EC LDA L990D,Y BEQ L93FF CMP #$8D BEQ L93FF CMP $8E BEQ L93FF JSR COUT INY BNE L93EC L93FF PLA TAY L9401 RTS L9402 ASC 8D ASC 84 ASC "OPEN "8D ASC 84 ASC "WRITE "8D00 L9413 LDA #$8D STA $8E LDA #$22 JSR L9052 LDY #$FF L941E INY LDA L943F,Y BEQ L9435 JSR COUT CMP #$A0 BNE L941E JSR L93E8 LDA #$AC STA $8E JMP L941E L9435 LDA #$23 JSR L9052 DEC L943E RTS L943E HEX 00 L943F ASC 8D ASC 84 ASC "OPEN "8D ASC 84 ASC "READ "8D00 L944F JSR L948C BIT $8E BPL L9486 JSR L96A3 LDA $88 ORA $89 BNE L946B LDA $84 CMP $86 BNE L9486 LDA $85 CMP $87 BNE L9486 L946B JSR L9688 CMP #$FF BEQ L9486 JSR L987B LDA $84 SEC SBC $88 STA $8E LDA $85 SBC $89 ORA $8E BEQ L946B BCC L946B L9486 JSR L98C3 JMP L97FA L948C JSR L9742 L948F LDA #$00 STA $8E STA $86 STA $87 STA $88 STA $89 JSR L9722 BIT $8F BPL L94AC DEC $8E LDA $8A STA $86 LDA $8B STA $87 L94AC LDA $0200,Y CMP #$8D BEQ L94CB LDA #$FF STA $88 STA $89 INY JSR L9722 BIT $8F BPL L94CB DEC $8E LDA $8A STA $88 LDA $8B STA $89 L94CB RTS L94CC JMP L6000 L94CF LDY #$FF STY $8E JSR L9536 LDA $80 CLC SBC L909D STA $8A LDA $81 SBC L909D+1 STA $8B JSR L96EE JSR L9536 CLC LDA L909D ADC #$01 STA $8A LDA L909D+1 ADC #$00 STA $8B JSR L96EE JSR L9598 JSR L9536 JSR L6006 LDA $0200 CMP #$D9 BNE L9544 JSR L9536 JSR L6006 LDY #$00 JSR L9759 BIT $8F BPL L9544 JSR L97DC LDA $8A STA L909D STA $80 LDA $8B STA L909D+1 STA $81 LDY #$01 LDA #$00 STA ($80),Y JMP L98C3 L9536 LDY $8E L9538 INY LDA L9547,Y BEQ L9544 JSR COUT JMP L9538 L9544 STY $8E RTS L9547 ASC 8D8D ASC "Program Length "00 ASC 8D ASC "Position "00 ASC 8D ASC "Change Position (Y/N) : "00 ASC 8D ASC "Enter New Position : "00 L9598 LDY #$00 L959A LDA L95B8,Y BEQ L95A5 JSR COUT INY BNE L959A L95A5 LDA $82 SEC SBC $80 STA $8A LDA $83 SBC $81 STA $8B JSR L96EE LDA #$FF RTS L95B8 ASC 8D ASC "Free Memory "00 L95C6 LDA #$00 DB $2C L95C9 LDA #$FF STA L9619 JSR L948C BIT $8E BMI L95DB LDA #$FF STA $88 STA $89 L95DB JSR L965C L95DE LDA #$10 STA $8E L95E2 LDY #$00 LDA ($8C),Y BEQ L9604 INY LDA ($8C),Y BEQ L9604 JSR L9635 JSR L987B LDA $84 SEC SBC $88 STA $10 LDA $85 SBC $89 ORA $10 BEQ L9607 BCC L9607 L9604 JMP L9656 L9607 DEC $8E BNE L95E2 BIT L9619 BPL L95DE JSR RDCHAR CMP #$83 BEQ L9604 BNE L95DE L9619 DB $00 L961A LDA #$FF STA $86 STA $87 JSR L9742 JSR L9759 BIT $8F BPL L9632 LDA $8A STA $86 LDA $8B STA $87 L9632 JMP L96A3 L9635 JSR L96E6 LDY #$01 LDA ($8C),Y CMP #$A0 BEQ L9645 LDA #$A0 JSR COUT L9645 LDY #$00 JSR L98A1 LDA ($8C),Y BEQ L9655 JSR COUT CMP #$8D BNE L9645 L9655 RTS L9656 LDA #$FF STA $86 STA $87 L965C LDA L909D STA $8C LDA L909D+1 STA $8D JSR L9872 LDY #$00 L966B LDA $84 SEC SBC $86 LDA $85 SBC $87 BCS L9687 L9676 JSR L98A1 LDA ($8C),Y BEQ L9687 CMP #$8D BNE L9676 JSR L987B JMP L966B L9687 RTS L9688 LDY #$00 L968A JSR L989A LDA ($82),Y CMP #$FF BEQ L969D PHA TYA STA ($82),Y PLA CMP #$8D BNE L968A RTS L969D JSR L98B1 LDA #$FF RTS L96A3 JSR L97DC JSR L9872 L96A9 SEC LDA $84 SBC $86 LDA $85 SBC $87 BCS L96C5 L96B4 JSR L96C6 CMP #$FF BEQ L96C5 CMP #$8D BNE L96B4 JSR L987B JMP L96A9 L96C5 RTS L96C6 JSR L989A LDY #$00 LDA ($82),Y CMP #$FF BEQ L96DE STA ($80),Y JSR L9893 L96D6 PHA TYA STA ($80),Y STA ($82),Y PLA RTS L96DE JSR L98B1 LDA #$FF JMP L96D6 L96E6 LDA $84 STA $8A LDA $85 STA $8B L96EE JSR L96FB L96F1 LDA $02F0,Y JSR COUT DEY BPL L96F1 RTS L96FB LDY #$FF L96FD INY JSR L970D EOR #$B0 STA $02F0,Y LDA $8A ORA $8B BNE L96FD RTS L970D LDX #$10 LDA #$00 L9711 ASL $8A ROL $8B ROL CMP #$0A BCC L971E SBC #$0A INC $8A L971E DEX BNE L9711 RTS L9722 LDA #$00 STA $8F STA $8A STA $8B DEY L972B INY LDA $0200,Y CMP #$A0 BEQ L972B CMP #$B0 BCC L9741 CMP #$BA BCS L9741 JSR L977E JMP L972B L9741 RTS L9742 LDY #$FF L9744 INY LDA $0200,Y CMP #$8D BEQ L9758 CMP #$A0 BEQ L9758 CMP #$B0 BCC L9744 CMP #$BA BCS L9744 L9758 RTS L9759 LDA #$00 STA $8F STA $8A STA $8B DEY L9762 INY LDA $0200,Y CMP #$A0 BEQ L9762 DEY L976B INY LDA $0200,Y CMP #$B0 BCC L977D CMP #$BA BCS L977D JSR L977E JMP L976B L977D RTS L977E DEC $8F PHA JSR L97A8 LDA $8B PHA LDA $8A PHA JSR L97A8 JSR L97A8 PLA CLC ADC $8A STA $8A PLA ADC $8B STA $8B PLA EOR #$B0 CLC ADC $8A STA $8A BCC L97AC INC $8B RTS L97A8 ASL $8A ROL $8B L97AC RTS L97AD LDA $25 PHA LDY #$00 L97B2 LDA L97C3,Y BEQ L97BD JSR COUT INY BNE L97B2 L97BD PLA STA $25 JMP VTAB L97C3 ASC 8D ASC 84 ASC "CLOSE"8D ASC 84 ASC "MAXFILES1"8D00 L97D7 LDA #$8C JMP COUT L97DC LDY #$00 JSR L98A8 L97E1 LDA ($80),Y CMP #$FF BNE L97ED JSR L9893 JMP L9816 L97ED STA ($82),Y TYA BNE L97F6 DEC $83 DEC $81 L97F6 DEY JMP L97E1 L97FA LDY #$00 JSR L989A L97FF LDA ($82),Y CMP #$FF BNE L980B JSR L98B1 JMP L9816 L980B STA ($80),Y INY BNE L97FF INC $81 INC $83 BNE L97FF L9816 TYA CLC ADC $80 STA $80 BCC L9820 INC $81 L9820 TYA CLC ADC $82 STA $82 BCC L982A INC $83 L982A LDY #$00 TYA STA ($80),Y STA ($82),Y RTS L9832 LDX #$00 L9834 LDA $0200,X JSR L9846 CMP #$FF BEQ L9843 INX CMP #$8D BNE L9834 L9843 JMP L987B L9846 LDY $81 CPY $83 BNE L9855 LDY $80 CPY $82 BNE L9855 JMP L9598 L9855 LDY #$00 CMP #$00 BEQ L9871 CMP #$FF BEQ L9871 CMP #$8D BEQ L9867 CMP #$A0 BCC L9871 L9867 STA ($80),Y JSR L9893 PHA TYA STA ($80),Y PLA L9871 RTS L9872 LDA #$0A STA $84 LDA #$00 STA $85 RTS L987B LDA $84 CLC ADC #$0A STA $84 BCC L9886 INC $85 L9886 RTS LDA $84 SEC SBC #$0A STA $84 BCS L9892 DEC $85 L9892 RTS L9893 INC $80 BNE L9899 INC $81 L9899 RTS L989A INC $82 BNE L98A0 INC $83 L98A0 RTS L98A1 INC $8C BNE L98A7 INC $8D L98A7 RTS L98A8 LDA $80 BNE L98AE DEC $81 L98AE DEC $80 RTS L98B1 LDA $82 BNE L98B7 DEC $83 L98B7 DEC $82 RTS LDA $8C BNE L98C0 DEC $8D L98C0 DEC $8C RTS L98C3 LDA L909D STA $80 LDA L909D+1 STA $81 LDA #$FF STA $82 LDA #$8F STA $83 LDY #$00 LDA #$FF STA ($80),Y STA ($82),Y L98DD LDA ($82),Y BEQ L98EA TYA BNE L98E6 DEC $83 L98E6 DEY JMP L98DD L98EA TYA CLC ADC $82 STA $82 BCC L98F4 INC $83 L98F4 LDY #$00 L98F6 LDA ($80),Y BEQ L9901 INY BNE L98F6 INC $81 BNE L98F6 L9901 TYA CLC ADC $80 STA $80 BCC L990B INC $81 L990B RTS L990C DB $00 L990D ASC 8D ASC " " ASC " "