T11 design WAS - Re: Inside old games machines, was: Re: Simulated CP/M-68K?

Allison ajp166 at bellatlantic.net
Wed Jun 20 10:03:23 CDT 2007


>
>Subject: Re: T11 design WAS - Re: Inside old games machines,was: Re: Simulated CP/M-68K?
>   From: "Ethan Dicks" <ethan.dicks at gmail.com>
>   Date: Wed, 20 Jun 2007 10:02:02 -0400
>     To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at classiccmp.org>
>
>
>Even without 32-bit registers, there are tricks one may employ.
>Twenty years ago, I had to implement a high-frequency filter in 286
>assembler as part of an auto-focus routine for a vision system.  It
>had to be fast, and the company would not pay for a 287 co-pro.  The
>normal technique for a simple 3x3 kernel is to sum up all the values
>in a 3x3 area and divide by 9 to get the average value, then iterate
>over the entire frame.  Dividing by 9 is expensive for a 286.
>Dividing by 8 isn't, and produced acceptable results.
>
>There are frequently tricks to avoid expensive math operations.  Video
>games use most of them.
>
>-ethan

I've used the same idea for decimal to bin and bin to decimal as multiply
or divide by 10 is costly in 8080/Z80/8048.  It was far easier and faster 
to do a pair of shifts and one add and then do a shift again than a 
general multiply. The same is true for the reverse though then you do 
a subtract as needed.  The code is linear and faster.  It also works well
for other non binary constants (3,5,6,7,9,10,11..).  Doing it this way 
is the obvious specific unrolling of a general shift and add multiply 
routine.

One of many tricks.

Allison


More information about the cctalk mailing list