* CLI TOY #1 * CLS.ASM: A command to clear the current (CLI) window. Works by * sending a HOME/CLEAR TO END OF SCREEN sequence to CON: * * Perpetrator: Dewi Williams ..!ihnp4!druca!dewi * Unconditionally placed in the public domain. * Included equate files. * ----------------------------------------------------------------------- NOLIST INCLUDE "exec/types.i" INCLUDE "exec/libraries.i" INCLUDE "libraries/dos.i" LIST * Local Equates * ------------------------------------------------------------------------ SysBase EQU 4 ; The one known address in the system. * External references * ----------------------------------------------------------------------- EXTERN_LIB OpenLibrary EXTERN_LIB Write EXTERN_LIB Output EXTERN_LIB IoErr * macros * ------------------------------------------------------------------------ * Calls to dos.library and exec library callsys MACRO CALLLIB _LVO\1 ENDM * The code segment * ------------------------------------------------------------------------- RORG 0 ; Relocatable code. ;------ get Exec's library base pointer: move.l SysBase,a6 LEA.L DOSName(PC),A1 ; name of dos library move.l #LIBRARY_VERSION,d0 callsys OpenLibrary MOVE.L D0,A6 ; Save library pointer (always in A6). BEQ.S DOSFAIL ; Give up! * Obtaining the output handle (needed for write) callsys Output ; Always works -- copy from process structure. MOVE.L D0,D1 ; Needed there by write * Write the sequence to the driver LEA.L CLS(PC),A0 MOVE.L A0,D2 ; Effective address of the buffer MOVEQ #4,D3 ; Length of buffer to write callsys Write ; Do it TST.L D0 ; Just set condition code BMI.S IOFAIL ; For disks & suchlike check == D3. * Exit back to CLI (shouldn't close CLI handles). MOVEQ #0,D0 ; Success exit code FINISHED: rts * All the error traps go here * --------------------------- ; Get here if we can't write to CON: for some reason. IOFAIL: callsys IoErr ; Returns real reason for failure. BRA.S FINISHED ; Quit ; Get here if we can't open dos.library. Give up! We should really ; alert... DOSFAIL: MOVEQ #RETURN_FAIL,D0 RTS * Data declarations * ------------------------------------------------ DOSName DOSNAME; CLS DC.B $9B,'H',$9B,'J' ; HOME, CLEAR TO END OF SCREEN END