home *** CD-ROM | disk | FTP | other *** search
- ;*** WINDOW PROGRAM - BY ├RAIG ┬RUCE - 21-╞EB-94
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:WINDOW"
-
- JMP MAIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- SCAN╓AL = $20
- CHR├╥ = 13
- ROWS .BUF 1
- COLS .BUF 1
- START╥OW .BUF 1
- START├OL .BUF 1
-
- ;===WINDOW===
-
- MAIN = *
- JSR WINSIZE
- STA ROWS
- STX COLS
- LDA SYSWORK+0
- LDX SYSWORK+1
- STA START╥OW
- STX START├OL
- ;** CHECK ARGUMENT COUNT
- LDA ACE┴RGC+1
- BNE ENOUGH┴RGS
- LDA ACE┴RGC+0
- CMP #2
- BCS ENOUGH┴RGS
-
- USAGE = *
- LDA #<USAGE═SG
- LDY #>USAGE═SG
- JSR EPUTS
- JMP WIN╨ARMS
-
- USAGE═SG = *
- .ASC "USAGE: WINDOW COLUMNS [ROWS [START├OLUMN [START╥OW]]]"
- .BYTE CHR├╥,0
-
- ENOUGH┴RGS = *
- LDA #1
- LDY #0
- JSR GETARG
- BEQ MAIN╞INISH
- JSR SCAN╬UM
- LDA SCAN╓AL+0
- STA COLS
-
- LDA #2
- LDY #0
- JSR GETARG
- BEQ MAIN╞INISH
- JSR SCAN╬UM
- LDA SCAN╓AL+0
- STA ROWS
-
- LDA #3
- LDY #0
- JSR GETARG
- BEQ MAIN╞INISH
- JSR SCAN╬UM
- LDA SCAN╓AL+0
- STA START├OL
-
- LDA #4
- LDY #0
- JSR GETARG
- BEQ MAIN╞INISH
- JSR SCAN╬UM
- LDA SCAN╓AL+0
- STA START╥OW
-
- MAIN╞INISH = *
- LDA START╥OW
- LDX START├OL
- STA SYSWORK+0
- STX SYSWORK+1
- LDA ROWS
- LDX COLS
- JSR WINSET
- BCS MAIN┼RROR
- LDA #$80
- LDX #$B8
- JSR WINCLS
-
- WIN╨ARMS = *
- LDA COLS
- JSR PUTNUM
- LDA #","
- JSR PUTCHAR
- LDA ROWS
- JSR PUTNUM
- LDA #","
- JSR PUTCHAR
- LDA START├OL
- JSR PUTNUM
- LDA #","
- JSR PUTCHAR
- LDA START╥OW
- JSR PUTNUM
- LDA #CHR├╥
- JSR PUTCHAR
- RTS
-
- MAIN┼RROR = *
- LDA #<MAIN┼RROR═SG
- LDY #>MAIN┼RROR═SG
- JMP EPUTS
- MAIN┼RROR═SG = *
- .ASC "WINSET: INVALID WINDOW PARAMETERS"
- .BYTE CHR├╥,0
-
- ;******** 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 = *
- LDX #STDOUT
- 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
-
- NUMBUF .BUF 11
-
- PUTNUM = *
- STA $30
- LDA #0
- STA $31
- STA $32
- STA $33
- LDA #<NUMBUF
- LDY #>NUMBUF
- STA ZP+0
- STY ZP+1
- LDA #1
- LDX #$30
- JSR UTOA
- LDA #<NUMBUF
- LDY #>NUMBUF
- STA ZP+0
- STY ZP+1
- JSR PUTS
- RTS
-
- 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
- ORA ZP+0
- RTS
-
- SCAN─IGIT .BUF 1
- SCAN╙AVE .BUF 4
- SCAN╘EMP .BUF 1
- SCAN╔NDEX .BUF 1
- SCAN┴NYTHING .BUF 1
-
- SCAN╬UM = * ;( (ZP)=NUM╙TR ) : .┘=SCAN, [SCAN╓AL]=NUM, .├╙=ERR
- LDY #0
- LDX #3
- LDA #0
- - STA SCAN╓AL,X
- DEX
- BPL -
- LDA #0
- STA SCAN┴NYTHING
- - LDA (ZP),Y
- CMP #" "
- BNE SCAN╬UM╬EXT
- INY
- BNE -
- SEC
- RTS
-
- SCAN╬UM╬EXT = *
- LDA (ZP),Y
- CMP #"0"
- BCC +
- CMP #"9"+1
- BCC ++
- + LDA SCAN┴NYTHING
- BEQ SCAN┼RROR
- CLC
- RTS
- + AND #$0F
- STA SCAN─IGIT
- LDA #$FF
- STA SCAN┴NYTHING
- ;** TIMES TEN
- STY SCAN╘EMP
- LDX #3
- - LDA SCAN╓AL,X
- STA SCAN╙AVE,X
- DEX
- BPL -
- LDA #2
- STA SCAN╔NDEX
- - CLC
- LDY #4
- LDX #0
- - ROL SCAN╓AL,X
- INX
- DEY
- BNE -
- BCS SCAN┼RROR
- DEC SCAN╔NDEX
- BNE --
- CLC
- LDY #4
- LDX #0
- - LDA SCAN╓AL,X
- ADC SCAN╙AVE,X
- STA SCAN╓AL,X
- INX
- DEY
- BNE -
- BCS SCAN┼RROR
- CLC
- LDY #4
- LDX #0
- - ROL SCAN╓AL,X
- INX
- DEY
- BNE -
- BCS SCAN┼RROR
- CLC
- LDY #4
- LDX #0
- LDA SCAN─IGIT
- - ADC SCAN╓AL,X
- STA SCAN╓AL,X
- LDA #0
- INX
- DEY
- BNE -
- BCS SCAN┼RROR
-
- LDY SCAN╘EMP
- INY
- BEQ SCAN┼RROR
- JMP SCAN╬UM╬EXT
-
- SCAN┼RROR = *
- SEC
- RTS
-
- ;===THE END===
- BSS = *
-