home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / ACE12-SRC-4.SFX / window.s < prev   
Encoding:
Text File  |  1990-02-12  |  3.8 KB  |  307 lines

  1. ;*** WINDOW PROGRAM - BY ├RAIG ┬RUCE - 21-╞EB-94
  2.  
  3. .SEQ ACEHEAD.S
  4. .ORG ACE┴PP┴DDRESS
  5. .OBJ "@0:WINDOW"
  6.  
  7. JMP MAIN
  8. .BYTE ACE╔─1,ACE╔─2,ACE╔─3
  9. .BYTE 64,0  ;** STACK,RESERVED
  10.  
  11. SCAN╓AL = $20
  12. CHR├╥ = 13
  13. ROWS .BUF 1
  14. COLS .BUF 1
  15. START╥OW .BUF 1
  16. START├OL .BUF 1
  17.  
  18. ;===WINDOW===
  19.  
  20. MAIN = *
  21.    JSR WINSIZE
  22.    STA ROWS
  23.    STX COLS
  24.    LDA SYSWORK+0
  25.    LDX SYSWORK+1
  26.    STA START╥OW
  27.    STX START├OL
  28.    ;** CHECK ARGUMENT COUNT
  29.    LDA ACE┴RGC+1
  30.    BNE ENOUGH┴RGS
  31.    LDA ACE┴RGC+0
  32.    CMP #2
  33.    BCS ENOUGH┴RGS
  34.  
  35. USAGE = *
  36.    LDA #<USAGE═SG
  37.    LDY #>USAGE═SG
  38.    JSR EPUTS
  39.    JMP WIN╨ARMS
  40.  
  41. USAGE═SG = *
  42.    .ASC "USAGE: WINDOW COLUMNS [ROWS [START├OLUMN [START╥OW]]]"
  43.    .BYTE CHR├╥,0
  44.  
  45. ENOUGH┴RGS = *
  46.    LDA #1
  47.    LDY #0
  48.    JSR GETARG
  49.    BEQ MAIN╞INISH
  50.    JSR SCAN╬UM
  51.    LDA SCAN╓AL+0
  52.    STA COLS
  53.  
  54.    LDA #2
  55.    LDY #0
  56.    JSR GETARG
  57.    BEQ MAIN╞INISH
  58.    JSR SCAN╬UM
  59.    LDA SCAN╓AL+0
  60.    STA ROWS
  61.  
  62.    LDA #3
  63.    LDY #0
  64.    JSR GETARG
  65.    BEQ MAIN╞INISH
  66.    JSR SCAN╬UM
  67.    LDA SCAN╓AL+0
  68.    STA START├OL
  69.  
  70.    LDA #4
  71.    LDY #0
  72.    JSR GETARG
  73.    BEQ MAIN╞INISH
  74.    JSR SCAN╬UM
  75.    LDA SCAN╓AL+0
  76.    STA START╥OW
  77.  
  78. MAIN╞INISH = *
  79.    LDA START╥OW
  80.    LDX START├OL
  81.    STA SYSWORK+0
  82.    STX SYSWORK+1
  83.    LDA ROWS
  84.    LDX COLS
  85.    JSR WINSET
  86.    BCS MAIN┼RROR
  87.    LDA #$80
  88.    LDX #$B8
  89.    JSR WINCLS
  90.  
  91.    WIN╨ARMS = *
  92.    LDA COLS
  93.    JSR PUTNUM
  94.    LDA #","
  95.    JSR PUTCHAR
  96.    LDA ROWS
  97.    JSR PUTNUM
  98.    LDA #","
  99.    JSR PUTCHAR
  100.    LDA START├OL
  101.    JSR PUTNUM
  102.    LDA #","
  103.    JSR PUTCHAR
  104.    LDA START╥OW
  105.    JSR PUTNUM
  106.    LDA #CHR├╥
  107.    JSR PUTCHAR
  108.    RTS
  109.  
  110. MAIN┼RROR = *
  111.    LDA #<MAIN┼RROR═SG
  112.    LDY #>MAIN┼RROR═SG
  113.    JMP EPUTS
  114. MAIN┼RROR═SG = *
  115.    .ASC "WINSET: INVALID WINDOW PARAMETERS"
  116.    .BYTE CHR├╥,0
  117.  
  118. ;******** STANDARD LIBRARY ********
  119.  
  120. PUTS = *
  121.    LDX #STDOUT
  122. FPUTS = *
  123.    STA ZP+0
  124.    STY ZP+1
  125.    LDY #$FF
  126. -  INY
  127.    LDA (ZP),Y
  128.    BNE -
  129.    TYA
  130.    LDY #0
  131.    JMP WRITE
  132. EPUTS = *
  133.    LDX #STDERR
  134.    JMP FPUTS
  135.  
  136. PUTCHAR = *
  137.    LDX #STDOUT
  138. PUTC = *
  139.    STA PUTC┬UFFER
  140.    LDA #<PUTC┬UFFER
  141.    LDY #>PUTC┬UFFER
  142.    STA ZP+0
  143.    STY ZP+1
  144.    LDA #1
  145.    LDY #0
  146.    JMP WRITE
  147.    PUTC┬UFFER .BUF 1
  148.  
  149. GETCHAR = *
  150.    LDX #STDIN
  151. GETC = *
  152.    LDA #<GETC┬UFFER
  153.    LDY #>GETC┬UFFER
  154.    STA ZP+0
  155.    STY ZP+1
  156.    LDA #1
  157.    LDY #0
  158.    JSR READ
  159.    BEQ +
  160.    LDA GETC┬UFFER
  161.    RTS
  162. +  SEC
  163.    RTS
  164.    GETC┬UFFER .BUF 1
  165.  
  166. NUMBUF .BUF 11
  167.  
  168. PUTNUM = *
  169.    STA $30
  170.    LDA #0
  171.    STA $31
  172.    STA $32
  173.    STA $33
  174.    LDA #<NUMBUF
  175.    LDY #>NUMBUF
  176.    STA ZP+0
  177.    STY ZP+1
  178.    LDA #1
  179.    LDX #$30
  180.    JSR UTOA
  181.    LDA #<NUMBUF
  182.    LDY #>NUMBUF
  183.    STA ZP+0
  184.    STY ZP+1
  185.    JSR PUTS
  186.    RTS
  187.  
  188. GETARG = *
  189.    STY ZP+1
  190.    ASL
  191.    STA ZP+0
  192.    ROL ZP+1
  193.    CLC
  194.    LDA ACE┴RGV
  195.    ADC ZP+0
  196.    STA ZP+0
  197.    LDA ACE┴RGV+1
  198.    ADC ZP+1
  199.    STA ZP+1
  200.    LDY #0
  201.    LDA (ZP),Y
  202.    TAX
  203.    INY
  204.    LDA (ZP),Y
  205.    STX ZP+0
  206.    STA ZP+1
  207.    ORA ZP+0
  208.    RTS
  209.  
  210. SCAN─IGIT .BUF 1
  211. SCAN╙AVE .BUF 4
  212. SCAN╘EMP .BUF 1
  213. SCAN╔NDEX .BUF 1
  214. SCAN┴NYTHING .BUF 1
  215.  
  216. SCAN╬UM = *  ;( (ZP)=NUM╙TR ) : .┘=SCAN, [SCAN╓AL]=NUM, .├╙=ERR
  217.    LDY #0
  218.    LDX #3
  219.    LDA #0
  220. -  STA SCAN╓AL,X
  221.    DEX
  222.    BPL -
  223.    LDA #0
  224.    STA SCAN┴NYTHING
  225. -  LDA (ZP),Y
  226.    CMP #" "
  227.    BNE SCAN╬UM╬EXT
  228.    INY
  229.    BNE -
  230.    SEC
  231.    RTS
  232.  
  233.    SCAN╬UM╬EXT = *
  234.    LDA (ZP),Y
  235.    CMP #"0"
  236.    BCC +
  237.    CMP #"9"+1
  238.    BCC ++
  239. +  LDA SCAN┴NYTHING
  240.    BEQ SCAN┼RROR
  241.    CLC
  242.    RTS
  243. +  AND #$0F
  244.    STA SCAN─IGIT
  245.    LDA #$FF
  246.    STA SCAN┴NYTHING
  247.    ;** TIMES TEN
  248.    STY SCAN╘EMP
  249.    LDX #3
  250. -  LDA SCAN╓AL,X
  251.    STA SCAN╙AVE,X
  252.    DEX
  253.    BPL -
  254.    LDA #2
  255.    STA SCAN╔NDEX
  256. -  CLC
  257.    LDY #4
  258.    LDX #0
  259. -  ROL SCAN╓AL,X
  260.    INX
  261.    DEY
  262.    BNE -
  263.    BCS SCAN┼RROR
  264.    DEC SCAN╔NDEX
  265.    BNE --
  266.    CLC
  267.    LDY #4
  268.    LDX #0
  269. -  LDA SCAN╓AL,X
  270.    ADC SCAN╙AVE,X
  271.    STA SCAN╓AL,X
  272.    INX
  273.    DEY
  274.    BNE -
  275.    BCS SCAN┼RROR
  276.    CLC
  277.    LDY #4
  278.    LDX #0
  279. -  ROL SCAN╓AL,X
  280.    INX
  281.    DEY
  282.    BNE -
  283.    BCS SCAN┼RROR
  284.    CLC
  285.    LDY #4
  286.    LDX #0
  287.    LDA SCAN─IGIT
  288. -  ADC SCAN╓AL,X
  289.    STA SCAN╓AL,X
  290.    LDA #0
  291.    INX
  292.    DEY
  293.    BNE -
  294.    BCS SCAN┼RROR
  295.  
  296.    LDY SCAN╘EMP
  297.    INY
  298.    BEQ SCAN┼RROR
  299.    JMP SCAN╬UM╬EXT
  300.  
  301.    SCAN┼RROR = *
  302.    SEC
  303.    RTS
  304.  
  305. ;===THE END===
  306. BSS = *
  307.