VolksForth/msdos/miniterm.fb

1 line
20 KiB
Plaintext
Raw Normal View History

\\ Terminalprogramm mit Blockinterface ( 08.03.91/KK ) Autor: Klaus Kohl, 30.01.89 aus FG-FORTH des RTX entnommen Beschreibung: Kleines Beispiel zur Implementation eines Fileinterfaces <20>ber die serielle Schnittstelle (Achtung: immer 8 Datenbits) Die Schnittstellenbefehle stammen aus dem PC-volksFORTH 3.81 von Klaus Schleisiek. Sie wurden weitgehend unver<65>ndert <20>ber- nommen, sind aber auf 4KByte-Puffer erweitert. File: SERIAL.SCR Umstellung des Ports durch Ausmaskierung der entsprechenden Zeilen in Screen 2 (momentan COM1 aktiviert). \ LOADSCREEN cas 28jun20 Onlyforth \ Suchreihenfolge: FORTH FORTH ONLY \needs Assembler 2 loadfrom asm.fb \ Assembler nachladen FROM source.img ( File for SAVESYSTEM ) $20 >label I_ctrl \ 8259-Register $21 >label I_mask \ 8259-Mask &02 &11 THRU ( SIO-Terminalroutines ) &12 &17 THRU ( extended command words ) &18 LOAD ( Terminalprogram ) \ Addresses and Constants cas 28jun20 | $C 4 * Constant SINT@ \ SIO-Interuptvector COM 1/3 \ $B 4 * Constant SINT@ \ SIO-Interuptvector COM 2/4 | $10 Constant I_level \ 8259-Interuptlevel COM 1/3 \ $08 Constant I_level \ 8259-Interuptlevel COM 2/4 ( Port address) | $3F8 >label Portadr \ Portaddress COM1: \ $2F8 >label Portadr \ Portaddress COM2: \ $3E8 >label Portadr \ Portaddress COM3: \ $2E8 >label Portadr \ Portaddress COM4: ( Selection of Baud rate ) \ &96 >label baud .( 1200 Baud ) \ &48 >label baud .( 2400 Baud ) | &12 >label baud .( 9600 Baud ) \ &02 >label baud .( 57600 Baud ) \ Queue and required commands cas 28jun20 ( Dataqueue with 128 bytes and two pointer for IRQ service ) ( Queue+0: Number of saved characters ) ( Queue+1: offset to next char to be send ) Create Queue 0 , 0 , $1000 allot \ send byte to port address ( b adr -- ) \needs pc! Code pc! A pop D byte out D pop Next \ Read Byte from port address ( adr -- b ) \needs pc@ Code pc@ D byte in A- D- mov D+ D+ xor Next