home *** CD-ROM | disk | FTP | other *** search
-
-
-
- CDL Z80 MACRO III Assembler C12012- 414X Page 1
- 87/12/07 22:16:57
- DateStamper Call from TurboPascal
- -1
-
-
- 2 .xlink
- 4 .phex
- 5 .pabs
- 6
- 7 .remark "
- 8 Code for inclusion inline in TurboPascal function
- 9 Prefix with /$2A/array where array is six byte
- 10 array for return of BCD result.
- 11
- 12 note that the .LADDR pseudo op causes bytes of
- 13 words to be listed in memory order
- 14 "
- 15
- 16
- 17
- 000C 18 getver = 12 ;CP/M function call
- 0005 19 BDOS = 0005H
- 20
- 21
- 22
- 0100 23 .loc 100H
- 0100 24 mainpatch:
- 25
- 26 ;first test for presence of DateStamper -- method is
- 27 ;to use function 12 and test full returned value
- 28 ;
- 29 ;
- 30 ;Turbo Pascal has loaded HL with pointer to array for
- 31 ;saving result
- 32
- 0100 E5 33 push h ;save pointer to buffer
- 0101 0E0C 34 mvi c,getversion
- 0103 1E00 35 mvi e,0
- 0105 CD0500 36 call BDOS ;normal test for 2.2
- 0108 7D 37 mov a,l
- 0109 FE22 38 cpi 22H
- 010B 2034 39 jrnz exit1 ;DateStamper only runs on 2.2
- 010D 7C 40 mov a,h
- 010E B7 41 ora a
- 010F 2030 42 jrnz exit1 ;not on MPM
- 0111 1E44 43 mvi e,'D' ;handshake character
- 0113 0E0C 44 mvi c,getversion
- 0115 CD0500 45 call BDOS
- 0118 7C 46 mov a,h
- 0119 FE44 47 cpi 'D' ;test for DS
- 011B 2024 48 jrnz exit1
- 49
- 50 ;
- 51 ;if we get to here then DE now points to standard clock routine
- 52 ;
- 0006 53 offset = clock - .
- 011D ED532301 54 sded . + offset ;in line patch
- 0121 E1 55 pop h ;get pointer to buffer
- 0123 56 clock equ $+1
-
-
-
- CDL Z80 MACRO III Assembler C12012- 414X Page 2
- 87/12/07 22:16:57
- DateStamper Call from TurboPascal
- -2
-
-
- 0122 CD0000 57 call 0
- 58
- 0125 5D 59 mov e,l ;get copy of final pointer
- 0126 54 60 mov d,h
- 0127 1B 61 dcx d
- 0128 1B 62 dcx d ;point to hours byte
- 0129 1A 63 ldax d ;get it
- 64
- 012A 11FBFF 65 lxi d,-5 ;get HL pointing to start
- 012D EB 66 xchg
- 012E 19 67 dad d ;DE to tail
- 68
- 012F 07 69 rlc ;test for relative clock
- 0130 E5 70 push h ;save pointer for null fill
- 0131 380E 71 jrc exit1
- 0133 E1 72 pop h
- 73 ;*****************************************
- 74 ; for TBBS only
- 75 ;now reverse order of array
- 0134 0603 76 mvi b,3
- 0136 77 ..loop:
- 0136 4E 78 mov c,m ;get front number
- 0137 1A 79 ldax d ;get tail number
- 0138 77 80 mov m,a ;swap
- 0139 79 81 mov a,c
- 013A 12 82 stax d
- 013B 23 83 inx h
- 013C 1B 84 dcx d
- 013D 10F7 85 djnz ..loop
- 86 ;*****************************************
- 87
- 013F 1808 88 jmpr exit2
- 89
- 90 ;fill array with zeros if DS not present
- 0141 E1 91 exit1: pop h
- 0142 0606 92 mvi b,6
- 0144 AF 93 xra a
- 0145 77 94 ..loop: mov m,a
- 0146 23 95 inx h
- 0147 10FC 96 djnz ..loop
- 97
- 0149 98 exit2:
- 99
- 100
- 101 .end
-
-
-
- CDL Z80 MACRO III Assembler C12012- 414X Page 3
- 87/12/07 22:16:57
- DateStamper Call from TurboPascal
- -3 +++++ Symbol Table +++++
-
-
- BDOS 0005 CLOCK 0123 EXIT1 0141 EXIT2 0149 GETVER 000C
- MAINPA 0100 OFFSET 0006
-