home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
300-399
/
ff329.lzh
/
CPU
/
asm
/
CPU.asm
< prev
Wrap
Assembly Source File
|
1990-03-02
|
4KB
|
135 lines
; WhatCPU.asm
;
; Actually a hand conversion of WhatCPU.c by Dave Haynie
; done by Ethan Dicks 14-mar-88
; beautification done by Ethan Dicks 14-Dec-88
;
; I did this as my first project in assembler. Documentation is very
; scanty regarding the use of structures in assembler. I got the magic
; offset into the ExecBase structure for the AttnFlags word by compiling
; Dave Haynie's program with Lattice, on a friend's machine, then
; running omd on the .o file.
;
; V 1.1
; Since I got a copy of the C-A v1.0 Macro Assembler, and the assembler
; includes with Lattice V4.01, I have been able to convert this program
; over to the niceties of INCLUDE files. I also too the opportunity to
; streamline the code to the tune of about 40 bytes, making this one of
; the smallest useful utilities.
;
; V 1.2 (07-Mar-1989)
; The text strings have been changed slightly, to save about 12 bytes.
; Other than that, there have been no significant changes.
;
; This program was most recently compiled on:
;
; assem
; MC68000 Macro Assembler Version 10.178
; Copyright (C) 1985 by Tenchstar Ltd., T/A Metacomco.
; All rights reserved.
;
; Blink
; Blink - Version 5.0
; Copyright (c) 1988 Lattice, Inc. All Rights Reserved.
;
;
; To recompile:
; assem WhatCPU.asm -i your_include_directory -o WhatCPU.o
; blink WhatCPU.o
;
; This code is freely redistributable, although not pretty.
;
section code
include "exec/execbase.i"
include "libraries/dos.i"
include "libraries/dos_lib.i"
include "exec/funcdef.i"
include "exec/exec_lib.i"
AbsExecBase equ 4
start: movea.l AbsExecBase,a6 ;put ptr to ExecBase in a6
lea dos_name(pc),a1 ;point to library name
moveq.l #0,d0 ;pick any version
jsr _LVOOpenLibrary(a6) ;open dos.library
movea.l d0,a5 ;save DosBase in A5
jsr _LVOOutput(a5) ;get OutputHandle into D0
move.l d0,d5 ;save OutputHandle in D5
;
; print title message
;
move.l #header,d2 ;print intro message
moveq.l #25,d3 ; 25 chars long
bsr.s print ;output string
;
; check processor type bits
;
btst.b #AFB_68020,AttnFlags+1(a6) ;check 68020 bit
beq.s not68020 ;nope... not set
move.l #mc68020,d2 ;point to "20"
moveq.l #2,d3 ; 2 chars long
bra.s break ;print processor type and
; check co-processor bit
;
not68020: btst.b #AFB_68010,AttnFlags+1(a6) ;check 68010 bit
beq.s not68010 ;nope... not set
move.l #mc68010,d2 ;point to "10"
moveq.l #2,d3 ; 6 chars long
bra.s break ;print processor type and
; check co-processor bit
;
not68010: move.l #mc68000,d2 ;must be 68000; print it
moveq.l #2,d3 ; 2 chars long
;print processor type and
; check co-processor bit
;
; *** WARNING ***
;* Fall through *
; ***************
;
break: bsr.s print ;output processor string
btst.b #AFB_68881,AttnFlags+1(a6) ;check 68881 bit
beq.s not68881 ;nope... not set
move.l #mc68881,d2 ;print " 68881"
moveq.l #6,d3 ; 6 chars long
bsr.s print
not68881:
;
; print <CR> at end of line
;
move.l #cr,d2 ;finish off with <crlf>
moveq.l #2,d3 ; 2 chars long
bsr.s print
;
; clean up and exit
;
movea.l a5,a1 ;get DosBase
jsr _LVOCloseLibrary(a6) ;close dos.library
moveq.l #0,d0 ;set return code
rts ;go home
;
; subroutines
;
print: move.l d5,d1 ;set output handle
jsr _LVOWrite(a5) ;write string to console
rts ;go back
;
; data section
;
;
; byte aligned data
;
dos_name: DOSNAME
header: dc.b 'System Configuration: 680'
mc68020: dc.b '20'
mc68010: dc.b '10'
mc68000: dc.b '00'
mc68881: dc.b ' 68881'
cr: dc.b 13,10
end