C P / M 6 8 0 0 0 A s s e m b l e r Revision 02.01 Page 1 Source File: clockset.s 1 2 3 ***************************************************************** 4 * * 5 * MORROW 68K SYSTEM clock routines * 6 * * 7 ***************************************************************** 8 9 10 ******************* 11 * E Q U A T E S * 12 ******************* 13 14 ioaddr = $ff0000 * compupro 68K i/o address space 15 16 17 base = ioaddr+$48 * standard base address 18 grpctl = base+$7 * select port 19 group0 = 8 * clock group select constant 20 21 clock = base+2 * clock address within group 0 22 23 tp64 = $10 * constant for 64 Hz 24 clkstb = $20 * strobe inactive 25 26 27 **************************** 28 * B E G I N C O D E * 29 **************************** 30 31 * Routine sets the interrupt rate to 64 time per second 32 33 00000000 13F8000800FF004F setit: move.b group0,grpctl * select group 0 34 00000008 13F8001000FF004A move.b tp64,clock * send 64 Hz constant strobe low 35 00000010 4E71 nop * stall for slow hardware 36 00000012 4E71 nop * -minimum of 2.0 us 37 00000014 4E71 nop * -for data setup time 38 00000016 13F8003000FF004A move.b tp64+clkstb,clock * send 64 Hz constant strobe high 39 0000001E 4E71 nop * stall for slow hardware 40 00000020 4E71 nop * -minimum of 2.0 us 41 00000022 4E71 nop * -for data hold time 42 00000024 13F8001000FF004A move.b tp64,clock * send 64 Hz constant strobe low 43 0000002C 4E75 rts 44 45 46 * Routine clears the clock interrupt 47 48 clearit: 49 0000002E 13F8000800FF004F move.b group0,grpctl * select group 0 50 00000036 103900FF004A move.b clock,d0 * read clock, clear interrupt 51 0000003C 4E75 rts 52 53 0000003E .end C P / M 6 8 0 0 0 A s s e m b l e r Revision 02.01 Page 2 Source File: clockset.s S y m b o l T a b l e base 00FF0048 ABS clearit 0000002E TEXT clkstb 00000020 ABS clock 00FF004A ABS group0 00000008 ABS grpctl 00FF004F ABS ioaddr 00FF0000 ABS setit 00000000 TEXT tp64 00000010 ABS roup0 00000008 ABS grpctl 00FF004F ABS ioaddr 00FF0000 ABS setit 00000000 TEXT tp64 000000