Home
 Introduction
 Using Holon
 Holon Tools
 Contact


 Using Holon

 User interface
    browser 
    macro view
    direct access
    online
    programming
    the program

 Editing
    module
    groups
    words
    hypertext 
    move items 

 Loading
    init code
    load all
    load used
    lean code
    code window

 Testing
    words
    program
    terminal
    interpreter
    changes  
    debugging
    debug code

 EPROM
    cold start
    cold test
    code image

   The Program

The example program is presented here as it is listed on the printer. -- Next

  • The module listing includes a table of contents.
  • The listing shows the words in their context. In the browser we concentrate on single words.
  • The names of words and groups can be enhanced in the actual printout, e.g. names of groups underlined, names of words printed bold.

HOLON-11 / Application                12.12.98


Module Application

The program consists of a command line interpreter (monitor), which
communicates with a remote terminal via the SCI port. The monitor
functions are invoked with single character commands. 

Groups

 1. SCI port

 2. Commands

 3. Main

HOLON-11 / Application / SCI port     12.12.98                    Page 1 


SCI port

\ Defines the serial port driver functions for polled communication. 

\ Waits for and reads a character at the SCI port. 
Code SCI@   ( -- b )     
     ldab # $28                         \ RDRF and OR bits
     begin  bitb SCSR  0<> until        \ wait for a character
     ldab SCDR  clra  pshd              \ read char and push on stack
     next 

\ Writes the byte b to the SCI port. 
Code SCI!   ( b -- )     
     begin  ldab SCSR  0< until         \ wait until the port is free
     puld  stab SCDR                    \ send byte
     next 

\ Initializes the SCI port. 
: SetupSCI
     $30 BAUD c!                        \ 9600 baud
     $00 SCCR1 c!                       \ 8 data, 1 stop bit
     $2C SCCR2 c!                       \ enable read and write (RE,TE)
     ; 

\ Directs the standard Forth execution vectors emit and key to the SCI
\ port. The default action of cr, cr0, emits the CR and LF codes and
\ resets a character counter. 
: SCI=Terminal
     make emit SCI!  make key SCI@  make cr cr0  ; 

    

HOLON-11 / Application / Commands     12.12.98                    Page 2 


Commands

\ A set of functions that are invoked by single letter commands. Add new
\ commands and functions according to your needs. 

\ Prints byte b as a binary number. 
: .bin   ( b -- )
     base @  2 base !  swap 8 #.  base !  ; 

: ReadPortA
     ." Port A is " PORTA c@ .bin  ; 

\ Delivers the value of the free running timer of the 68HC11. 
Code Counter   ( -- n )
     ldd TCNT  1push 

: ReadTimer
     ." The free running timer contains " Counter decimal u. ; 

\ A string object. 
" 0F" String Byte$ 

\ Asks for a byte in hex notation, converts it to a number and writes the
\ value to port A. 
: WritePortA
     hex ." Enter a byte as a hex number and press <Enter>: " 
     ask Byte$  upcase Byte$  
     Byte$ Number? if drop PORTA c! else 2drop then  ; 

\ Displays 16 bytes at address adr. 
: DumpLine   ( adr -- )
     16 0 do dup c@ 2 #. space 1+ loop drop  ; 

\ Displays 128 memory bytes starting at address adr. 
: DumpMemory    ( adr -- )
     hex ." Memory contents at $" dup 4 #. 
     ."  and following:" cr  
     8 0 do dup DumpLine cr 16 + loop drop  ; 

\ Display the contents of the internal HC11 register block using an
\ universal memory dump function. 
: ReadRegisters
     $1000 DumpMemory  ; 

    

HOLON-11 / Application / Main         12.12.98                    Page 3 


Main

\ The main program and the cold start code. Press Ctl+F7=PROM to create
\ the code image for the EPROM. Set the limits of the code image in the
\ word SetROM at the start of the module Basis. 

: SetupTerminal
     SetupSCI  SCI=Terminal  hex
     cr ." Please enter your commands."  ; 

\ The program. 
: Main
     SetupTerminal 
     begin cr ." > "  key $5F and 
           case
           ascii A of ReadPortA endof
           ascii B of WritePortA endof
           ascii C of ReadTimer endof
           ascii D of ReadRegisters endof
           ascii E of cr ." End of program" exit endof
           emit endcase                 
     again  ; 

\ Sets up the Forth machine and starts the program. 
\ In the test version the application returns to the monitor via SWI. 
Label InitProgram
     lds # MainSP0                      \ sets up the data stack
     ldd # MainRP0  std RP              \ and the return stack
     ldab # 3  stab TMSK2               \ prescale the timer
     ldy # DoMain 2 +                   \ .. return hook to monitor ..
     jmp ' Main                         \ run program 

\ Points the reset vector to the cold start code. 
\ -- Have you set the correct memory limits? See SetRAM and SetROM -- 
( SetResetVector )
     InitProgram vRESET SetVector 
     

-- top -- next --