home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG096.ARC / HINTS.WSF < prev    next >
Text File  |  1979-12-31  |  3KB  |  77 lines

  1.                         -- Status lines --
  2.  
  3.                          by Simon Carter
  4.  
  5.  
  6.  
  7. Many of you may know that it is  possible to obtain a 17th line on 
  8. the screen  under BASIC, but have  you ever seen two  extra lines?  
  9. This  is made  possible  by shifting  the screen  up  so that  the 
  10. 18th line is in sight.
  11.  
  12.  
  13. The following machine code program will set up the screen for 64 x 
  14. 18 format
  15.  
  16. 00100          DEFR    10              ;Regard all values decimal
  17. 00110          ORG     26000           ;Assemble at 26000 decimal
  18. 00120          LD      A,6             ;Register 6 of 6545-
  19. 00130          OUT     (12),A          ;Total # vertical rows
  20. 00140          LD      A,18            ;18 displayed rows
  21. 00150          OUT     (13),A          ;Tell 6545
  22. 00160          LD      A,7             ;Register 7 of 6545-
  23. 00170          OUT     (12),A          ;Vertical sync position
  24. 00180          LD      A,18            ;Move screen up 
  25. 00190          OUT     (13),A          ;Tell 6545
  26. 00200          RET                     ;Return to BASIC
  27. 00210          END                     ;End of program
  28.  
  29.          and this  BASIC program  will do the same.
  30.  
  31. 00100 IN#0 OFF:OUT 12,6:OUT 13,18:OUT 12,7:OUT 13,18:IN#0
  32.  
  33.  
  34.  
  35.  
  36. Once we have set  up the 18th line, we need  a subroutine to place 
  37. text  on  it.   The  following  requires  a  GOSUB  [String]  1000 
  38. statement to  call it.  If  the first  character of STRING  is '0' 
  39. then STRING will be printed on the 17th line, otherwise it will be 
  40. printed on the 18th line.  If an '@' character is encountered, the 
  41. rest of the line will be cleared.
  42.  
  43.  
  44. For example :
  45. GOSUB ["1@"] 1000 - Clears 18th line.
  46.  
  47. GOSUB ["0Used :"+STR(USED)]  1000 -  Prints number  of used PCG's 
  48. on 17th line.
  49.  
  50. GOSUB ["1Press Ctrl-C to return to  the Shell....@"] 1000 - Prints 
  51. message on 18th line and clears rest of line.
  52.  
  53.  
  54.  
  55. 01000 VAR(Z4$):IF Z4$(;1,1)="0":W=62463 ELSE LET W=62527
  56. 01010 Z4$=Z4$(;2,LEN(Z4$)):IF Z4$="@":Y=1:GOTO 1030
  57. 01020 FOR Y=1 TO LEN(Z4$)-1:POKE W+Y,ASC(Z4$(;Y,Y)):NEXT Y:Y=Y+1:
  58.       IF Z4$(;Y,Y)<>"@":POKE W+Y,ASC(Z4$(;Y,Y)):RETURN
  59. 01030 FOR Y=W+Y TO W+64:POKE Y,32:NEXT Y:RETURN
  60.  
  61.  
  62.  
  63. Note that  by using <ESC><W>  to move the  screen up in  BASIC the 
  64. screen will revert to 64 x 16  mode. (The 17th and 18th lines will 
  65. disappear from view)
  66.  
  67.  
  68. It is possible  to get a 19th line  on the screen by  moving it up 
  69. twice, but BASIC's top line is half obscured.  However, by leaving 
  70. the screen in its normal position  and programming the 6545 for 19 
  71. displayed lines,  it is  possible to  place text  on the  17th and 
  72. 19th lines, which will be positioned above BASIC's screen.
  73.  
  74. layed lines,  it is  possible to  place text  on the  17th and 
  75. 19th lines, which will be positioned above BASIC's screen.
  76.  
  77.