CollapseOS is a project to make an operating system and tools that can help restart technology after a civilization collapse: https://collapseos.org/
Of course, the software is only part restarting computer technology. The other part is building things like transistors or vacuum tubes and turning those into computers.
If you only had one book to take back, I would recommend Understanding Digital Computers by Paul Siegel, which includes overviews of how transistors, vacuum tube, magnetic core memory and other things work. It shows how to make memory and logic gates from these, and how to put them together into a full computer. And more importantly the 1961 edition of this book does not seem to have the copyright renewed (checked at Stanford and LOC) so it is public domain and available at: https://archive.org/details/understanding_digital_computers
Of course, you might want more detail if you have to recreate computers, since manufacturing something with feature size smaller than a millimeter and control of the composition at better than parts per million. So I made a list of books that I believe are public domain (either because they were written by the government or because they are US books publish 1963 or before and the copyright was not renewed). This list includes ones with much more detail on transistors, vacuum tubes, magnetic core memory and also basic materials and science information that can be useful.
General Computer Information:
Numbers with Computers:
Alternative Computer Construction:
This list is unfortunately missing the technology that made computers cheap in the 1970s: mask produced integrated circuits using complementary metal oxide semiconductors (CMOS), since that was just starting to be developed in 1964 when copyright still applies. (Transistor Technology Volume II chapter 9 discusses field effect transistors and Transistor Technology Volume III chapter 5 discusses photo engraving which are precursors technologies.)
"This way of thinking has some distinct advantages. Right now companies
fight intensely to retain their exemption from “intermediary liability,”
guaranteed to them by the now-infamous Section 230 of the
Communications Decency Act. This frees them from legal responsibility
for nearly all content posted on their platform. Yet striking down
Section 230 could mean that the companies will either be sued out of
existence or start taking down swaths of content to avoid being sued.
Focusing on regulating algorithms, by contrast, would mean that
companies wouldn’t be liable for each tiny piece of content, but would
have legal responsibility for how their products distribute and amplify
material. This is, after all, what these companies actually do:
organize, target, and magnify other people’s content and data. Shouldn’t
they take responsibility for that?"
Now with some text as well (and I grant this python code to the public domain as well.)
import time import board import displayio import digitalio import vectorio import gamepadshift import terminalio BUTTON_LEFT = 128 BUTTON_UP = 64 BUTTON_DOWN = 32 BUTTON_RIGHT = 16 BUTTON_SELECT = 8 BUTTON_START = 4 BUTTON_A = 2 BUTTON_B = 1 print('About to begin.') for i in range(3,0,-1): print(i) time.sleep(0.2) circle = vectorio.Circle(10) circle2 = vectorio.Circle(6) display = board.DISPLAY palette = displayio.Palette(2) palette = 0x000000 palette = 0xFFFFFF palette.make_transparent(0) def get_char_tile(c, x, y): g = terminalio.FONT.get_glyph(ord(c)) tile = displayio.TileGrid(g.bitmap, pixel_shader=palette, tile_width=g.width, tile_height=g.height, default_tile=g.tile_index, x=x, y=y) return tile def get_string_group(s, x, y): text_w, text_h = terminalio.FONT.get_bounding_box() group = displayio.Group(max_size=len(s)) for i, c in enumerate(s): group.append(get_char_tile(c, x+text_w*i, y)) return group palette2 = displayio.Palette(2) palette2 = 0xFF0000 palette2 = 0x0000FF palette2.make_transparent(0) vect = vectorio.VectorShape(shape=circle, pixel_shader=palette) vect2 = vectorio.VectorShape(shape=circle2, pixel_shader=palette2, x=5, y=-5) s = get_string_group("Hey World!",15,0) vect3 = vectorio.VectorShape(shape=vectorio.Rectangle(2, 10), pixel_shader=palette2) move_group = displayio.Group() move_group.append(vect) move_group.append(vect2) group = displayio.Group() group.append(move_group) group.append(s) group.append(vect3) display.show(group) #display.show(group2) group.x = 20 group.y = 20 pad = gamepadshift.GamePadShift(digitalio.DigitalInOut(board.BUTTON_CLOCK), digitalio.DigitalInOut(board.BUTTON_OUT), digitalio.DigitalInOut(board.BUTTON_LATCH)) button = 0 while button != BUTTON_START: button = pad.get_pressed() if button & BUTTON_UP == BUTTON_UP: move_group.y += -1 if button & BUTTON_DOWN == BUTTON_DOWN: move_group.y += 1 if button & BUTTON_LEFT == BUTTON_LEFT: move_group.x += -1 if button & BUTTON_RIGHT == BUTTON_RIGHT: move_group.x += 1 time.sleep(0.01) move_group.x %= display.width move_group.y %= display.height