home *** CD-ROM | disk | FTP | other *** search
- ;*** WRAP PROGRAM
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:WRAP"
-
- JMP MAIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- WORK1 = $02 ;(16)
- WORK2 = $12 ;(16)
- WORK3 = $22 ;(14)
-
- CHR├╥ = $0D
- CHR╘AB = $09
- CHR╤UOTE = $22
-
- ;SCREEN
-
- SCR╘OP┴DDR = $30 ;(2)
- SCR╠INE┴DDR = $32 ;(2)
- CUR╥OW = $34 ;(1)
- CUR├OL = $35 ;(1)
- SCR╥OWS = $36 ;(1)
- SCR├OLS = $37 ;(1)
- SCR╥OW╔NC = $38 ;(2)
- CUR╠EFT═ARGIN = $3A ;(1)
-
- ;DOCUMENT
-
- LINE╨TR = $40 ;(4)
- LINE╬UM = $44 ;(4)
- TOS╠INE╨TR = $48 ;(4)
- TOP╠INE╨TR = $4C ;(4)
- BOT╠INE╨TR = $50 ;(4)
- LINE├OUNT = $54 ;(4)
- FILE╠ENGTH = $58 ;(4)
- TARGET╠EN = $5C ;(1)
- WRAP╞LAG = $5D ;(1) ;128=WRAP,64=SHOW├╥
-
- ;MANAGEMENT
-
- MODIFIED = $3B ;(1) ;$00=NO, $FF=MODIFIED
- MODE╞LAGS = $3C ;(1) ;$80=INSERT, $40=INDENT
- STATUS╒PDATE = $3D ;(1) ;128=LINE,64=COL,32=MOD,16=INS,8=BYT,4=FRE,2=NM,1=MSG
- MARKED╠INE╨TR .BUF 4 ;(4)
- MARKED╠INE╬UM .BUF 4 ;(4)
- MARKED├OL .BUF 4 ;(1)
-
- ;LINE FORMAT
-
- HEAD╬EXT╨TR = $70 ;(4)
- HEAD╨REV╨TR = $74 ;(4)
- HEAD╠INE╠EN = $78 ;(1)
- HEAD╔NDENT = $79 ;(1)
- HEAD╞LAGS = $7A ;(1) ;$80=CONNECTED, $40=NULL╠INE
- HEAD╠ENGTH = $0B
-
- ;KILL BUFFER
-
- BUFFER╘OP╨TR .BUF 4 ;(4)
- BUFFER┬OT╨TR .BUF 4 ;(4)
- BUFFER╠INE├OUNT .BUF 4 ;(4)
-
- ;DOCUMENT BUFFERS
-
- ;=== MAIN ===
-
- MAIN = *
- JSR MAIN╔NIT
- LDA #1
- LDY #0
- JSR GETARG
- JSR LOAD╞ILE
- RTS
-
- MAIN╔NIT = *
- LDA #$80
- STA WRAP╞LAG
- LDA #75
- STA TARGET╠EN
- RTS
-
- ;*** LOAD FILE: USES WORK2 ***
-
- LOAD╚EAD = WORK2+0
- LOAD╘AIL = WORK2+4
- LOAD╠INES = WORK2+8
- LOAD┬YTES = WORK2+12
- LOAD╞CB = WORK3+0
- LOAD╠INE╙CAN = WORK3+1
- LOAD╠INE╠EN = WORK3+2
- LOAD┬UF├OUNT = WORK3+3
- LOAD┬UF╨TR = WORK3+4
-
- LOAD╞ILE = * ;( (ZP)=NAME ) : [W2]=HEAD, [W2]=TAIL, [W2]=LINES, [W2]=BYTES
- JSR SAVE╫ORK3
- JSR LOAD╔NIT
- LDA #"R"
- JSR OPEN
- STA LOAD╞CB
- - JSR LOAD╠INE
- BCS +
- JSR LOAD╠INE╫RAP
- JSR LOAD╠INE╙TORE
- JSR LOAD╠INE╧VERFLOW
- JMP -
- + LDA LOAD╠INE╠EN
- BEQ +
- JSR LOAD╠INE╫RAP
- LDA #$00
- STA LINE╞LAGS
- JSR LOAD╠INE╙TORE
- + LDA LOAD╞CB
- JSR CLOSE
- JSR RESTORE╫ORK3
- RTS
-
- LOAD╔NIT = *
- LDA #0
- LDX #16+14-1
- - STA LOAD╚EAD,X
- DEX
- BPL -
- RTS
-
- LOAD╠INE = * ;( ) : .├╙=END
- ;TAB EXPANSION WILL GO INTO THIS ROUTINE
- LDX LOAD┬UF╨TR
- LDY LOAD╠INE╠EN
-
- LOAD╬EXT┬YTE = *
- LDA LOAD┬UF├OUNT
- BNE ++
- STY LOAD╠INE╠EN
- JSR LOAD┬UF
- BCC +
- RTS
- + LDY LOAD╠INE╠EN
- LDX LOAD┬UF╨TR
- + NOP
-
- - LDA FILEBUF,X
- STA LINE,Y
- INX
- INY
- CMP #CHR├╥
- BEQ ++
- CPY TARGET╠EN
- BEQ + ;DETERMINES IF ├╥S WILL GO BEYOND LEN
- BCS ++
- + DEC LOAD┬UF├OUNT
- BNE -
- BEQ LOAD╬EXT┬YTE
-
- + DEC LOAD┬UF├OUNT
- STX LOAD┬UF╨TR
- STY LOAD╠INE╠EN
- CLC
- RTS
-
- LOAD┬UF = * ;( ) : .├╙=EOF
- JSR STOPKEY
- BCS +
- LDA #<FILEBUF
- LDY #>FILEBUF
- STA ZP+0
- STY ZP+1
- LDA #<254
- LDY #>254
- LDX LOAD╞CB
- JSR READ
- BCS +
- BEQ +
- STA LOAD┬UF├OUNT
- LDA #0
- STA LOAD┬UF╨TR
- CLC
- RTS
- + SEC
- RTS
-
- LOAD╠INE╫RAP = *
- LDX LOAD╠INE╠EN
- DEX
- LDY #$00
- LDA LINE,X
- CMP #CHR├╥
- BEQ +
- LDY #$80
- + STY LINE╞LAGS
- CMP #CHR├╥
- BNE +
- - STX LINE╠INE╠EN
- STX LOAD╠INE╙CAN
- STX LOAD╠INE╠EN
- RTS
-
- + LDX LOAD╠INE╠EN
- CPX TARGET╠EN
- BCC -
-
- + BIT WRAP╞LAG
- BMI +
- - LDA TARGET╠EN
- STA LOAD╠INE╙CAN
- STA LINE╠INE╠EN
- RTS
-
- + LDX TARGET╠EN
- - DEX
- CPX #255
- BEQ --
- LDA LINE,X
- CMP #" "
- BNE -
- + INX
- STX LOAD╠INE╙CAN
- STX LINE╠INE╠EN
- RTS
-
- LOAD╠INE╙TORE = *
- LDA #<LINE
- LDY #>LINE
- STA ZP+0
- STY ZP+1
- LDA LINE╠INE╠EN
- LDY #0
- LDX #STDOUT
- JSR WRITE
- LDA #CHR├╥
- JSR PUTCHAR
- RTS
-
- LOAD╠INE╧VERFLOW = *
- LDX LOAD╠INE╙CAN
- LDY #0
- - CPX LOAD╠INE╠EN
- BCS +
- LDA LINE,X
- STA LINE,Y
- INX
- INY
- BNE -
- + STY LOAD╠INE╠EN
- RTS
-
- ;=== MANAGEMENT ROUTINES ===
-
- WORK3╙AVE .BUF 14
-
- SAVE╫ORK3 = *
- LDX #13
- - LDA WORK3,X
- STA WORK3╙AVE,X
- DEX
- BPL -
- RTS
-
- RESTORE╫ORK3 = *
- LDX #13
- - LDA WORK3╙AVE,X
- STA WORK3,X
- DEX
- BPL -
- RTS
-
- ;=== STANDARD LIBRARY ===
-
- PUTS = *
- LDX #STDOUT
- FPUTS = *
- STA ZP+0
- STY ZP+1
- LDY #$FF
- - INY
- LDA (ZP),Y
- BNE -
- TYA
- LDY #0
- JMP WRITE
- EPUTS = *
- LDX #STDERR
- JMP FPUTS
-
- PUTCHAR = *
- STX XSAVE
- STY YSAVE
- LDX #STDOUT
- JSR PUTC
- LDX XSAVE
- LDY YSAVE
- RTS
- XSAVE .BUF 1
- YSAVE .BUF 1
-
- PUTC = *
- STA PUTC┬UFFER
- LDA #<PUTC┬UFFER
- LDY #>PUTC┬UFFER
- STA ZP+0
- STY ZP+1
- LDA #1
- LDY #0
- JMP WRITE
- PUTC┬UFFER .BUF 1
-
- GETCHAR = *
- LDX #STDIN
- GETC = *
- LDA #<GETC┬UFFER
- LDY #>GETC┬UFFER
- STA ZP+0
- STY ZP+1
- LDA #1
- LDY #0
- JSR READ
- BEQ +
- LDA GETC┬UFFER
- RTS
- + SEC
- RTS
- GETC┬UFFER .BUF 1
-
- GETARG = *
- STY ZP+1
- ASL
- STA ZP+0
- ROL ZP+1
- CLC
- LDA ACE┴RGV
- ADC ZP+0
- STA ZP+0
- LDA ACE┴RGV+1
- ADC ZP+1
- STA ZP+1
- LDY #0
- LDA (ZP),Y
- TAX
- INY
- LDA (ZP),Y
- STX ZP+0
- STA ZP+1
- RTS
-
- ;===BSS===
-
- BSS = *
- LINEBUF = BSS+0 ;(256)
- LINE╬EXT╨TR = LINEBUF+$0 ;(4)
- LINE╨REV╨TR = LINEBUF+$4 ;(4)
- LINE╠INE╠EN = LINEBUF+$8 ;(1)
- LINE╔NDENT = LINEBUF+$9 ;(1)
- LINE╞LAGS = LINEBUF+$A ;(1) ;$80=CONNECTED, $40=TAIL╠INE
- LINE = LINEBUF+$B ;(241)
-
- FILEBUF = LINEBUF+256 ;(256)
- TPA╞REEMAP = FILEBUF+256 ;(256)
- BSS┼ND = TPA╞REEMAP+256
-