mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.5 KiB
153 lines
4.5 KiB
; printers.asm 12/25/2011 dwg -
|
|
|
|
; Copyright (C) 2011-2012 Douglas Goodall All Rights Reserved.
|
|
; For non-commercial use by N8VEM community
|
|
|
|
maclib portab
|
|
maclib cpmbdos
|
|
|
|
extrn hexref
|
|
|
|
cseg
|
|
|
|
public pr$h$nyb
|
|
pr$h$nyb:
|
|
enter
|
|
0000+F5 PUSH PSW
|
|
0001+C5 PUSH B
|
|
0002+D5 PUSH D
|
|
0003+E5 PUSH H
|
|
0004 E60F ani 15
|
|
0006 210000 lxi h,hexref
|
|
0009 85 add l
|
|
000A 6F mov l,a
|
|
000B 5E mov e,m
|
|
000C 0E02 mvi c,CWRITE
|
|
000E CD0500 call BDOS
|
|
leave
|
|
0011+E1 POP H
|
|
0012+D1 POP D
|
|
0013+C1 POP B
|
|
0014+F1 POP PSW
|
|
0015 C9 ret
|
|
|
|
public pr$h$byte
|
|
pr$h$byte:
|
|
enter
|
|
0016+F5 PUSH PSW
|
|
0017+C5 PUSH B
|
|
0018+D5 PUSH D
|
|
0019+E5 PUSH H
|
|
001A F5 push psw
|
|
001B 0F rrc
|
|
001C 0F rrc
|
|
001D 0F rrc
|
|
001E 0F rrc
|
|
001F CD0000 call pr$h$nyb
|
|
0022 F1 pop psw
|
|
0023 CD0000 call pr$h$nyb
|
|
leave
|
|
0026+E1 POP H
|
|
0027+D1 POP D
|
|
0028+C1 POP B
|
|
0029+F1 POP PSW
|
|
002A C9 ret
|
|
|
|
public pr$h$word
|
|
pr$h$word:
|
|
enter
|
|
002B+F5 PUSH PSW
|
|
002C+C5 PUSH B
|
|
002D+D5 PUSH D
|
|
002E+E5 PUSH H
|
|
002F E5 push h
|
|
0030 7C mov a,h
|
|
0031 CD1600 call pr$h$byte
|
|
0034 E1 pop h
|
|
0035 7D mov a,l
|
|
0036 CD1600 call pr$h$byte
|
|
leave
|
|
0039+E1 POP H
|
|
003A+D1 POP D
|
|
003B+C1 POP B
|
|
003C+F1 POP PSW
|
|
003D C9 ret
|
|
|
|
public pr$d$word
|
|
pr$d$word:
|
|
enter
|
|
003E+F5 PUSH PSW
|
|
003F+C5 PUSH B
|
|
0040+D5 PUSH D
|
|
0041+E5 PUSH H
|
|
0042 CD4A00 call PDEC
|
|
leave
|
|
0045+E1 POP H
|
|
0046+D1 POP D
|
|
0047+C1 POP B
|
|
0048+F1 POP PSW
|
|
0049 C9 ret
|
|
|
|
; From the "99 Bottles of Beer" web page at
|
|
; http://99-bottles-of-beer.net/language-assembler-(8080-8085)-764.html
|
|
; adapted for use in RomWBW/Apps with rmac syntax
|
|
|
|
|
|
; PRINT HL AS A DECIMAL NUMBER (0-65535)
|
|
|
|
; public PDEC
|
|
public PDEC,PDEC1,PDEC2,PDEC3,PDEC4,PDEC5
|
|
004A AF PDEC: XRA A ; LEADING ZERO FLAG
|
|
004B 320100 STA PDEC5
|
|
004E 01F0D8 LXI B, -10000
|
|
0051 CD6C00 CALL PDEC1
|
|
0054 0118FC LXI B, -1000
|
|
0057 CD6C00 CALL PDEC1
|
|
005A 019CFF LXI B, -100
|
|
005D CD6C00 CALL PDEC1
|
|
0060 0EF6 MVI C, -10
|
|
0062 CD6C00 CALL PDEC1
|
|
0065 0EFF MVI C, -1
|
|
0067 3EFF MVI A, 0FFh ; IF NUMBER IS ZERO, THIS MAKES SURE
|
|
0069 320100 STA PDEC5 ; IT'S PRINTED
|
|
006C 3E2F PDEC1: MVI A, '/' ; "0" - 1
|
|
006E 3C PDEC2: INR A
|
|
006F 09 DAD B
|
|
0070 DA6E00 JC PDEC2
|
|
0073 320000 STA PDEC4 ; SUBTRACT BC FROM HL
|
|
0076 7D MOV A, L
|
|
0077 99 SBB C
|
|
0078 6F MOV L, A
|
|
0079 7C MOV A, H
|
|
007A 98 SBB B
|
|
007B 67 MOV H, A
|
|
007C 3A0000 LDA PDEC4
|
|
007F FE30 CPI '0' ; ZERO?
|
|
0081 C28A00 JNZ PDEC3
|
|
0084 3A0100 LDA PDEC5 ; ZERO FLAG SET?
|
|
0087 FE00 CPI 0h
|
|
0089 C8 RZ ; COMMENT OUT TO PRINT LEADING ZEROS
|
|
008A 3A0000 PDEC3: LDA PDEC4
|
|
CONOUTA ; WAS "CALL PCHAR"
|
|
008D+F5 PUSH PSW
|
|
008E+C5 PUSH B
|
|
008F+D5 PUSH D
|
|
0090+E5 PUSH H
|
|
0091+0E02 MVI C,CWRITE
|
|
0093+5F MOV E,A
|
|
0094+CD0500 CALL BDOS
|
|
0097+E1 POP H
|
|
0098+D1 POP D
|
|
0099+C1 POP B
|
|
009A+F1 POP PSW
|
|
009B 3EFF MVI A, 0FFh ; SET LEADING ZERO FLAG
|
|
009D 320100 STA PDEC5
|
|
00A0 C9 RET
|
|
|
|
dseg
|
|
|
|
0000 00 PDEC4: DB 0 ; TEMP FOR 16 BIT SUBTRACTION
|
|
0001 00 PDEC5: DB 0 ; FLAG FOR LEADING ZEROS
|
|
|
|
0002 END
|
|
|