1#!/usr/bin/env perl
2# $XTermId: acs.pl,v 1.3 2018/04/22 15:14:45 tom Exp $
3# -----------------------------------------------------------------------------
4# this file is part of xterm
5#
6# Copyright 2018 by Thomas E. Dickey
7#
8#                         All Rights Reserved
9#
10# Permission is hereby granted, free of charge, to any person obtaining a
11# copy of this software and associated documentation files (the
12# "Software"), to deal in the Software without restriction, including
13# without limitation the rights to use, copy, modify, merge, publish,
14# distribute, sublicense, and/or sell copies of the Software, and to
15# permit persons to whom the Software is furnished to do so, subject to
16# the following conditions:
17#
18# The above copyright notice and this permission notice shall be included
19# in all copies or substantial portions of the Software.
20#
21# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
25# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28#
29# Except as contained in this notice, the name(s) of the above copyright
30# holders shall not be used in advertising or otherwise to promote the
31# sale, use or other dealings in this Software without prior written
32# authorization.
33# -----------------------------------------------------------------------------
34# Assuming at least 24x80, print an array of the printable characters and their
35# mapping to alternate character-set.  This also requires cursor-addressing.
36
37use strict;
38use warnings;
39use diagnostics;
40
41sub failed() {
42    my $args = shift;
43    printf STDERR "? %s\n", $args;
44    exit 1;
45}
46
47sub need() {
48    my $cap   = shift;
49    my $check = `tput $cap 0 0`;
50    chomp $check;
51    &failed("missing capability: $cap") if ( $check eq "" );
52}
53
54&need("cup");
55&need("clear");
56&need("smacs");
57&need("rmacs");
58
59system("tput clear");
60system("tput enacs");
61my $smacs = `tput smacs`;
62my $rmacs = `tput rmacs`;
63
64for my $row ( 0 .. 15 ) {
65    for my $col ( 0 .. 5 ) {
66        my $ch = 32 + $row + $col * 16;
67        last if ( $ch >= 127 );
68        system( sprintf( "tput cup %d %d", $row, 4 + $col * 12 ) );
69        my $xx = chr($ch);
70        printf '%2x:%s{%s%s%s}', $ch, $xx, $smacs, $xx . $xx . $xx . $xx,
71          $rmacs;
72    }
73}
74
75printf "\n";
76
771;
78