home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / 256KB.UTILS.SFX / console.a < prev    next >
Encoding:
Text File  |  1993-06-23  |  5.3 KB  |  389 lines

  1. ;CPUT"@1:CONSOLE.A
  2. ;
  3. ;
  4.  LDA #<BREAK
  5.  STA $316
  6.  LDA #>BREAK
  7.  STA $317
  8.  LDA #0
  9.  STA WRBASE
  10.  STA RAM256
  11. ; SET COLORS
  12.  LDA #6
  13.  STA 53280
  14.  LDA #3
  15.  STA 53281
  16.  LDX #MESS0-MESS0 ;'MONITOR' TITLE
  17.  STX FLGS
  18.  BEQ BREA02 ;JUMP
  19. BREAK CLD
  20.  LDX #5
  21. BREA00 PLA
  22.  STA PCH,X ;READ REGISTERS ETC...
  23.  DEX
  24.  BPL BREA00
  25.  LDA PCL
  26.  SEC
  27.  SBC #2
  28.  STA PCL
  29.  BCS BREA01
  30.  DEC PCH
  31. BREA01 LDX #MESS1-MESS0 ;'BREAK' TITLE
  32. BREA02 STX SYREG
  33.  LDA #%11000000
  34.  STA MSGFLG ;TURN ON MESSAGES
  35.  TSX
  36.  STX SP ;SAVE STACK POINTER
  37.  LDX SYREG
  38.  JSR STRING ;PRINT TITLE
  39.  LDA #0
  40.  STA T2
  41.  STA T2+1
  42.  CLI
  43.  JMP REGS
  44. ;
  45. ;
  46. ;
  47. STRING LDA MESS0,X
  48.  PHP
  49.  AND #%01111111
  50.  JSR CHROUT ;OUTPUT CHARACTER
  51.  INX
  52.  PLP
  53.  BPL STRING ;PRINT MESSAGE
  54.  RTS
  55. ;
  56. MESS0 .BYT 13,'MONITOR',141
  57. MESS1 .BYT 13,'BREA',203
  58. MESS2 .BYT 13,'   PC  SR AC XR '
  59.  .BYT 'YR SP',13,';',160
  60. MESS3 .BYT 'A',160
  61. MESS4 .BYT 13,'ERRO',210
  62.  
  63. ;---------------------------------
  64. ;
  65. ; PRINT REGISTERS (R)
  66. ;
  67. REGS LDX #MESS2-MESS0
  68.  JSR STRING ;"   PC  SR AC XR YR SP"
  69.  LDA PCH
  70.  JSR OUTHEX ;PRINT (PCH)
  71.  LDY #0
  72. REGS00 LDA PCL,Y
  73.  JSR HEXSPC ;PRINT HEX NUMBER AND SPACE
  74.  INY ;PRINT REGISTERS
  75.  CPY #6
  76.  BCC REGS00
  77.  BCS NEWCMD
  78.  
  79. ;
  80. MCMD .BYT 'XMRG'
  81.  .BYT 'TCDA'
  82.  .BYT '.HF>'
  83.  .BYT ';BJ'
  84. MCMD00 .BYT '@LSV'
  85. ;
  86. MVEC .WOR EXIT-1,MEMO-1,REGS-1,GOTO-1
  87.  .WOR TRANS-1,TRAN99-1,DISP-1,ASME-1
  88.  .WOR ASME-1,HUNT-1,FILL-1,STORE-1
  89.  .WOR SREG-1,BANK-1,JUMP-1
  90. ;---------------------------------
  91. ; ERROR
  92. ERR JSR QUEST ;PRINT "?"
  93.  
  94. ;---------------------------------
  95. ; NEW COMMAND LINE
  96. NEWCMD JSR CR ;PRINT CR
  97.  LDX #0
  98.  STX CHRPTR
  99.  STX WRBASE
  100. NEWC00 JSR CHRIN
  101.  STA BUF,X
  102.  INX
  103.  CMP #13
  104.  BNE NEWC00 ;NOT YET CR
  105.  DEX
  106.  STX BUFEND
  107. NEWC01 JSR CHRGET ;CHECK FOR ":"
  108.  BEQ NEWCMD ;START NEW LINE
  109.  CMP #' ' ;IGNORE SPACES
  110.  BEQ NEWC01
  111.  LDX #MVEC-MCMD-1
  112. NEWC02 CMP MCMD,X ;CHECK COMMANDS
  113.  BEQ NEWC03
  114.  DEX
  115.  BPL NEWC02
  116.  BMI ERR ;ERROR
  117. NEWC03 CPX #MCMD00-MCMD
  118.  BCS NEWC08 ;COMMAND WITHOUT HEXPRM
  119.  TXA
  120.  ASL A
  121.  TAX
  122.  LDA MVEC+1,X
  123.  PHA
  124.  LDA MVEC,X
  125.  PHA
  126.  JMP ACCEPT ;HEX WORD TO (TO)
  127. ;
  128. NEWC08 CMP #'@'
  129.  BNE NEWC07
  130.  JMP DISC
  131. NEWC07 STA CMPFLG
  132.  JMP FILE
  133.  
  134. ;---------------------------------
  135. ;CHANGE REGISTERS (;)
  136. ;
  137. SREG BCS NEWCMD
  138.  LDA TO
  139.  LDY TO+1
  140.  STA PCL
  141.  STY PCH
  142.  LDY #0
  143. SREG00 JSR ACCEPT ;HEX WORD TO (TO)
  144.  BCS NEWCMD
  145.  LDA TO
  146.  STA FLGS,Y
  147.  INY
  148.  CPY #5
  149.  BCC SREG00
  150.  BCS NEWCMD
  151.  
  152. ;---------------------------------
  153. ; EXECUTE PROGRAM
  154. ;
  155. GOTO BCS GOTO00 ;USE OPTIONAL ADDR
  156.  LDA TO
  157.  STA PCL
  158.  LDA TO+1
  159.  STA PCH
  160. GOTO00 LDX SP
  161.  TXS
  162.  LDX #0
  163. GOTO01 LDA PCH,X
  164.  PHA
  165.  INX
  166.  CPX #3
  167.  BNE GOTO01
  168.  LDX XR
  169.  LDY YR
  170.  LDA ACC
  171.  RTI
  172.  
  173. ;---------------------------------
  174. ;
  175. ; LOAD/VERIFY/SAVE
  176. ;
  177. FILE LDY #1
  178.  STY SA
  179.  LDA #8
  180.  STA FA
  181.  DEY
  182.  STY FNLEN
  183.  STY STATUS
  184.  STY VERCK
  185.  LDA #>XCNT
  186.  STA FNADR+1
  187.  LDA #<XCNT
  188.  STA FNADR
  189. FILE00 JSR CHRGET ;GET CHAR FROM BUFFER
  190.  BEQ FILE02
  191.  CMP #32
  192.  BEQ FILE00
  193.  CMP #'"'
  194.  BNE FILERR
  195.  LDX CHRPTR
  196. FILE01 CPX BUFEND
  197.  BCS FILE02
  198.  LDA BUF,X
  199.  INX
  200.  CMP #'"'
  201.  BEQ FILE03
  202.  STA (FNADR),Y
  203.  INY
  204.  STY FNLEN
  205.  CPY #19
  206.  BCC FILE01
  207. FILERR JMP ERR
  208. FILE03 STX CHRPTR
  209.  JSR CHRGET ;GET CHAR FROM BUFFER
  210.  JSR ACCEPT ;HEX WORD TO (TO)
  211.  BCS FILE02
  212.  LDA TO
  213.  STA FA
  214.  JSR ACCEPT ;HEX WORD TO (TO)
  215.  BCS FILE02
  216.  JSR MOVE ;COPY (TO) TO (T2)
  217.  JSR ACCEPT ;HEX WORD TO (TO)
  218.  BCS FILERR
  219.  LDA TO
  220.  SBC T2
  221.  LDA TO+1
  222.  SBC T2+1
  223.  BCC FILERR
  224.  JSR CR ;PRINT CR
  225.  LDX TO
  226.  LDY TO+1
  227.  LDA CMPFLG
  228.  CMP #'S'
  229.  BNE FILERR
  230.  LDA #0
  231.  STA SA
  232.  LDA #T2
  233.  JSR SAVE
  234. NEWC09 JMP NEWCMD
  235. ;
  236. FILE02 LDA CMPFLG
  237.  CMP #'V'
  238.  BEQ FILE04
  239.  CMP #'L'
  240.  BNE FILERR
  241.  LDA #0
  242. FILE04 JSR LOAD
  243.  LDA STATUS
  244.  AND #%00010000
  245.  BEQ NEWC09
  246.  LDA CMPFLG
  247.  CMP #'L'
  248.  BEQ FILERR
  249.  LDX #MESS4-MESS0
  250.  JSR STRING ;PRINT MESSAGE
  251. ;---------------------------------
  252. ; EXECUTE SUBROUTINE (J)
  253. ;
  254. JUMP BCS JUMP00
  255.  LDA TO
  256.  STA PCL
  257.  LDA TO+1
  258.  STA PCH
  259. JUMP00 LDA #>JUMP02
  260.  PHA
  261.  LDA #<JUMP02
  262.  PHA
  263.  LDX #0
  264. JUMP01 LDA PCH,X
  265.  PHA
  266.  INX
  267.  CPX #3
  268.  BNE JUMP01
  269.  LDX XR
  270.  LDY YR
  271.  LDA ACC
  272. JUMP02 RTI
  273.  STA ACC
  274.  STX XR
  275.  STY YR
  276.  PHP
  277.  PLA
  278.  STA FLGS
  279. NEWC10 JMP NEWCMD
  280.  
  281. ;---------------------------------
  282. ; DISK COMMANDS (@)
  283. ;
  284. DISC LDX CHRPTR
  285.  CPX BUFEND
  286.  BCC DISC00
  287.  JMP READER ;READ DISK CHANNEL
  288. DISC00 LDA BUF,X
  289.  CMP #' '
  290.  BNE DISC01 ;SEND COMMAND OR DIR
  291.  INC CHRPTR
  292.  BNE DISC
  293. DISC01 CMP #'$'
  294.  BEQ DISC10 ;SEND DISK COMMAND
  295.  JMP SEND
  296. DISC10 JSR CR ;PRINT RET.
  297.  LDY #$F0
  298.  JSR LSN
  299.  LDA #'$'
  300. DISC11 JSR $EDDD ;CIOUT
  301.  INC CHRPTR
  302.  LDX CHRPTR
  303.  CPX BUFEND
  304.  BCS DISC12
  305.  LDA BUF,X
  306.  BCC DISC11
  307. DISC12 JSR $EDFE ;UNLISTEN
  308.  LDA #8
  309.  JSR $ED09 ;TALK
  310.  LDA #$60
  311.  JSR $EDC7 ;TKSA
  312.  LDA #0
  313.  STA STATUS
  314.  LDY #3
  315. DISC13 JSR $EE13 ;ACPTR
  316.  STA $63
  317.  JSR $EE13 ;ACPTR
  318.  STA $62
  319.  LDX STATUS
  320.  BNE DISC17
  321.  DEY
  322.  BNE DISC13
  323.  JSR $BDD1 ;PRINT LINE#
  324.  JSR SPACE ;PRINT SPC
  325. DISC14 JSR $EE13 ;ACPTR
  326.  LDX STATUS
  327.  BNE DISC17
  328.  CMP #0
  329.  BEQ DISC19
  330.  JSR CHROUT ;OUTPUT CHARACTER
  331.  JSR $F13E ;GET (KEYBOARD)
  332.  CMP #' '
  333.  BNE DISC16
  334. DISC15 JSR $F13E ;GET (KEYBOARD)
  335.  CMP #' '
  336.  BEQ DISC16
  337.  CMP #3
  338.  BNE DISC15
  339.  BEQ DISC17
  340. DISC16 JSR $F6ED ;STOP-KEY TEST
  341.  BNE DISC14
  342. DISC17 JSR $EDEF ;UNTALK
  343.  LDY #$E0
  344.  JSR LSN
  345. DISC18 JSR $EDFE ;UNLISTEN
  346.  JMP NEWCMD
  347. DISC19 JSR CR ;PRINT RET.
  348.  LDY #2
  349.  BNE DISC13
  350.  
  351. ;SEND DISK COMMAND
  352.  
  353. SEND LDY #$6F
  354.  JSR LSN ;LISTEN AND SECONDARY
  355. SEND00 LDX CHRPTR
  356.  CPX BUFEND
  357.  BCS SEND01
  358.  LDA BUF,X
  359.  JSR $EDDD ;CIOUT
  360.  INC CHRPTR
  361.  BNE SEND00
  362. SEND01 BEQ DISC18
  363.  
  364. ;READ ERROR CHANNEL
  365.  
  366. READER JSR CR ;PRINT RET.
  367.  LDX #$6F
  368.  JSR TLK
  369. READ00 JSR $EE13 ;ACPTR
  370.  CMP #13
  371.  BEQ DISC18
  372.  JSR CHROUT ;OUTPUT CHARACTER
  373.  BNE READ00
  374.  BEQ DISC18
  375. TLK LDA #8
  376.  JSR $ED09 ;TALK
  377.  TXA
  378.  JMP $EDC7 ;TKSA
  379. LSN LDA #8
  380.  JSR $ED0C ;LISTEN
  381.  TYA
  382.  JMP $EDB9 ;SECOND
  383.  
  384. ;--------------------------------
  385. ;EXIT TO BASIC
  386. ;
  387. EXIT JMP ($A002)
  388.  .END 
  389.